不带队列的java ThreadPoolExecutor
我想创建一个固定大小的线程池,不允许任何任务进入它的队列。换句话说,如果线程池当前正在使用,那么传入的任务应该被彻底拒绝。在我看来,基于documentation,一种方法是创建一个拒绝接受任务的虚拟队列对象。用Java实现这一点的惯用方法是什么
你可以在下面搜索框中键入要查询的问题!
我想创建一个固定大小的线程池,不允许任何任务进入它的队列。换句话说,如果线程池当前正在使用,那么传入的任务应该被彻底拒绝。在我看来,基于documentation,一种方法是创建一个拒绝接受任务的虚拟队列对象。用Java实现这一点的惯用方法是什么
# 1 楼答案
对于后代来说,如果您需要一个没有队列的线程池,并且运行所有作业(与OP稍有不同),那么您可以使用
SynchronousQueue
,该线程池将阻塞,直到线程准备好执行作业为止。诀窍是使用一个RejectedExecutionHandler
来调用将阻塞的队列上的put(...)
您将能够提交作业,直到达到
maximumPoolSize
个线程,然后提交将被阻止,直到作业完成,并且有一个线程可以从SynchronousQueue
中退出队列