我们有一个场景,提交给ThreadPoolExecutor的任务是长期运行的.当线程池启动时,我们启动它,核心池大小= 5,最大池大小= 20,队列大小为10.在我们的应用程序中,大约有10个任务被提交.大多数情况下,这些任务运行几分钟/小时然后完成.然而,有一种情况是所有5个任务都被I/O挂起.结果我的核心池大小达到了最大值,但我的Threadpoolexecutor队列未满.所以额外的5个任务永远不会有机会运行.请建议我们如何处理这种情况?在这种情况下,有一个更小的队列更好的选择吗?初始化threadPool时最佳队列大小是多少?
关于被绞死的任务,有什么方法可以将线程从Threadpool中拉出来?在这种情况下,至少其他任务将有机会运行.