我想创建一个ThreadPoolExecutor,这样当它达到最大大小并且队列已满时,submit()方法会在尝试添加新任务时阻塞。我是否需要为此实现一个自定义的RejectedExecutionHandler,或者是否有一种现有的方法可以使用标准的Java库来实现此目的?
发布于 2016-09-02 18:39:09
我在elastic search client中发现了这个拒绝策略。它在阻塞队列上阻塞调用者线程。下面的代码-
static class ForceQueuePolicy implements XRejectedExecutionHandler
{
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor)
{
try
{
executor.getQueue().put(r);
}
catch (InterruptedException e)
{
//should never happen since we never wait
throw new EsRejectedExecutionException(e);
}
}
@Override
public long rejected()
{
return 0;
}
}https://stackoverflow.com/questions/2001086
复制相似问题