Java 阻塞仍然会导致线程不足吗?

Java 阻塞仍然会导致线程不足吗?,java,concurrency,Java,Concurrency,这可能是一个补救问题,但我只是重复了一下,我需要澄清一些事情。如果我有一个管理5个线程的固定线程池,我有150个任务a实例和150个任务B实例。。。任务B依赖于它的任务A对应方的完成情况,因此它可以阻止等待任务A。而A和B的任务都提交到同一个固定线程池,这会导致线程不足,对吗?当一个任务阻塞时,它不会释放该线程来执行另一个任务。是吗?我想是的,尽管我很难找到任何关于它的信息。在Java中实现抢占式多任务处理没有什么意义。作为一名开发人员,假设一个线程在完成之前只运行一个任务比多个任务可以同时共享

这可能是一个补救问题,但我只是重复了一下,我需要澄清一些事情。如果我有一个管理5个线程的固定线程池,我有150个任务a实例和150个任务B实例。。。任务B依赖于它的任务A对应方的完成情况,因此它可以阻止等待任务A。而A和B的任务都提交到同一个固定线程池,这会导致线程不足,对吗?当一个任务阻塞时,它不会释放该线程来执行另一个任务。是吗?

我想是的,尽管我很难找到任何关于它的信息。在Java中实现抢占式多任务处理没有什么意义。作为一名开发人员,假设一个线程在完成之前只运行一个任务比多个任务可以同时共享一个线程更安全


创建两个独立的执行者:一个用于任务A,另一个用于任务B。

我也是这么想的。。。我无论如何都不是一个低级程序员,但是如果一个线程从一个未完成的任务跳到另一个任务,我会觉得很混乱。是的,我也要采用双执行器策略。在处理阻塞策略和共享资源时,顺序非常重要:)@DylanMeeus我认为优先级只影响下一个可用线程上首先执行的任务。这并不意味着java会中断其他任务以运行优先级更高的任务。现在,我只是在任务a和任务B之间使用了一些同步的延迟初始化,这克服了它们之间的复杂依赖关系,我将延迟方法称为可运行任务,以获得一些异步收益。稍后我将讨论线程池的划分。如果任务B可以在等待任务A时阻塞线程,那么是的,它可能会导致饥饿。有许多方法可以解决这个问题,但最简单的方法之一是,如果任务B的对应项尚未执行,则不允许任务B阻塞。虽然在没有看到一些代码的情况下很难说清楚,但通常情况下应该是这样的。