如何在多线程环境中发现ThreadPoolTask​​Executor已满?

时间:2015-05-22 21:32:57

标签: java multithreading

我怎么知道ThreadPoolTask​​Executor已满?我用

e.getActiveCount()>=e.getMaxPoolSize()

如果我在多线程环境中使用它可以吗?

1 个答案:

答案 0 :(得分:0)

调用e.getThreadPoolExecutor().getQueue()会获得基础BlockingQueue使用的ThreadPoolExecutor。这是安全的,因为ThreadPoolTaskExecutor的基础ThreadPoolExecutorThreadPoolExecutor BlockingQueue都是final

获得BlockingQueue后,您可以调用remainingCapacity(),这将返回队列在调用方法时可以容纳的其他元素的数量。这是安全的,因为BlockingQueue本身是为并发使用而设计的。