我有一个
线程池是通过
这种情况是否可能发生,如何避免?我正在考虑中断后台任务,以为普通任务腾出位置。
目标是限制应用程序中的线程数量,因为Google表示拥有大量线程不好,而它们大多数时间都处于空闲状态也不好。
在程序执行开始时,将提交约10000个任务。大约需要~50个后台任务队列,并且大部分时间将花费在等待后台作业进行。
ExecutorService
来并发地执行我的任务。其中大部分任务是简单操作,每个操作需要约300毫秒完成。但是其中有一些任务是背景处理队列,它们一直接收并按顺序执行新的子任务。只要有普通任务在运行,这些后台任务就会保持活动状态。线程池是通过
Executors
的方法(还不知道是哪个)生成的,该方法允许用户指定线程数。我担心以下情况可能会发生:线程数少于后台队列数。在某个时刻,所有后台队列都在工作,阻塞了ExecutorService
的所有线程。因此,没有普通任务将被启动,程序将永久挂起。这种情况是否可能发生,如何避免?我正在考虑中断后台任务,以为普通任务腾出位置。
目标是限制应用程序中的线程数量,因为Google表示拥有大量线程不好,而它们大多数时间都处于空闲状态也不好。
在程序执行开始时,将提交约10000个任务。大约需要~50个后台任务队列,并且大部分时间将花费在等待后台作业进行。