package org.testng.internal.thread; | |
import java.util.concurrent.LinkedBlockingQueue; | |
import java.util.concurrent.RejectedExecutionException; | |
import java.util.concurrent.ThreadPoolExecutor; | |
import java.util.concurrent.TimeUnit; | |
import org.testng.TestNGException; | |
/** | |
* An <code>IPooledExecutor</code> implementation based on JDK1.5 native support. | |
* | |
* @author <a href="mailto:the_mindstorm@evolva.ro>the_mindstorm</a> | |
*/ | |
public class PooledExecutorAdapter extends ThreadPoolExecutor implements IPooledExecutor { | |
public PooledExecutorAdapter(int noThreads) { | |
super(noThreads, | |
noThreads, | |
0L, | |
TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); | |
} | |
public void execute(Runnable command) { | |
try { | |
super.execute(command); | |
} | |
catch(RejectedExecutionException ree) { | |
throw new TestNGException("Task was not accepted for execution", ree); | |
} | |
} | |
public void awaitTermination(long timeout) throws InterruptedException { | |
super.awaitTermination(timeout, TimeUnit.MILLISECONDS); | |
} | |
} |