目前,我正在使用期货进行异步线程处理。我希望它的功能类似于“cachedThreadPool”,但也要做以下两件事:
在自定义ThreadPoolExecutor中可以这样做吗?我对用这种方式使用执行者很陌生,所以指出正确的方向对解决这个问题是非常有帮助的。
发布于 2015-03-25 17:14:09
应该仔细考虑动态调整线程池的大小。如果您有超时,并且您的响应是减少线程数量,假设任务是可解析的,那么这可能会使问题更糟。
无论如何,下面的代码会在任务抛出异常时更改池的大小,如果任务成功完成,则会使其更大
class ManagedThreadPoolExecutor extends ThreadPoolExecutor {
@Override
protected void afterExecute(Runnable r, Throwable t) {
if(t != null)
setMaximumPoolSize(getMaximumPoolSize()-1);
else
setMaximumPoolSize(getMaximumPoolSize()+1);
}
}https://stackoverflow.com/questions/29261387
复制相似问题