具有有限队列的Java线程池

阿米尔(Amir Rachum):

我正在使用java.util.concurrentExecutors类创建用于运行Web服务器的请求处理程序的固定线程池:

static ExecutorService  newFixedThreadPool(int nThreads) 

并且说明是:

创建一个线程池,该线程池重用在共享的无界队列中操作的一组固定线程

但是,我正在寻找实现与缓冲池完全相同的线程池实现,除了使用有队列。有这样的实现吗?还是我需要为固定线程池实现自己的包装器?

lscoughlin:

您想要做的是新建自己的ExecutorService,可能使用ThreadPoolExecutorThreadPoolExecutor具有一个构造函数,该构造函数使用BlockingQueue并获取一个有界队列,您可以使用例如为边界构造的ArrayBlockingQueue您还可以包括RejectedExecutionHandler来确定队列已满时该怎么做,或者挂起对阻塞队列的引用并使用offer方法。

这是一个迷你示例:

BlockingQueue<Runnable> linkedBlockingDeque = new LinkedBlockingDeque<Runnable>(
    100);
ExecutorService executorService = new ThreadPoolExecutor(1, 10, 30,
    TimeUnit.SECONDS, linkedBlockingDeque,
    new ThreadPoolExecutor.CallerRunsPolicy());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章