【发布时间】:2011-11-18 10:42:59
【问题描述】:
我有两个疑问:
关于 Java 中的固定线程池。假设我创建了一个有 5 个线程的固定线程池,并且所有线程当前都在执行,并且还假设队列中有 4 个任务等待完成这些线程的执行。如果所有当前正在执行的任务都被阻塞了,会发生什么?是否有办法从该队列中获取任务并将阻塞的任务放入队列中?
我们如何知道任务是被阻塞还是执行?
【问题讨论】:
标签: java multithreading threadpool
我有两个疑问:
关于 Java 中的固定线程池。假设我创建了一个有 5 个线程的固定线程池,并且所有线程当前都在执行,并且还假设队列中有 4 个任务等待完成这些线程的执行。如果所有当前正在执行的任务都被阻塞了,会发生什么?是否有办法从该队列中获取任务并将阻塞的任务放入队列中?
我们如何知道任务是被阻塞还是执行?
【问题讨论】:
标签: java multithreading threadpool
如果所有当前正在执行的任务都被阻塞了,会发生什么?是否有办法从该队列中获取任务并将阻塞的任务放入队列中?
不,没有这样的设施。如果一个任务开始执行并被阻塞,那么将阻塞该线程直到它正常完成,或者被线程池关闭中断。
我们如何知道一个任务是被阻塞还是执行?
如果您需要知道这一点,那么您需要将一些知识放入任务代码本身,然后您的应用程序的其他部分可以查询这些知识。显然,在将任务提交给执行者之前,需要保留对任务的引用以使其工作。
【讨论】: