ZZ *_*der 5 java concurrency multithreading threadpool
我有一个使用创建的线程池
   java.util.concurrent.ThreadPoolExecutor
无论如何我还能等到游泳池闲置吗?我的意思是所有线程都没有运行,队列中没有任何东西在等待.
我搜索了网络,所有的解决方案都不适合我.例如,我不想关闭池,所以awaitTermination()不起作用.我也知道如何getTaskCount()但我不想继续轮询池,这会浪费CPU.
这是一个大项目,我不想更改池中运行的所有任务,所以我正在寻找一些不依赖任务合作的解决方案.所以闩锁或障碍对我不起作用.
你可以继承ThreadPoolExecutor并使用beforeExecute和afterExecute添加钩子来跟踪你喜欢的任务执行,包括计算当前正在执行的任务的基本数学.还可以使用getQueue()直接访问Queue.
在这些之间,您可以轻松实现您要求的跟踪.我很好奇你的用例是什么......当它是空的时候你会对游泳池做什么?