java代码实现 线程池监控队列
时间: 2023-07-05 16:24:58 浏览: 162
要监控线程池的队列,可以使用ThreadPoolExecutor类的getQueue()方法获取线程池的队列,然后通过队列的size()方法获取队列中等待执行的任务数量。下面是一个简单的Java代码示例:
```java
import java.util.concurrent.*;
public class ThreadPoolMonitor {
public static void main(String[] args) throws InterruptedException {
// 创建一个固定大小的线程池
int poolSize = 5;
ThreadPoolExecutor executor = new ThreadPoolExecutor(poolSize, poolSize,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>());
// 向线程池提交任务
for (int i = 0; i < 10; i++) {
executor.submit(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task completed!");
});
}
// 监控线程池队列
while (true) {
BlockingQueue<Runnable> queue = executor.getQueue();
int queueSize = queue.size();
System.out.println("Queue size: " + queueSize);
Thread.sleep(500);
}
}
}
```
这个例子中,我们创建了一个固定大小为5的线程池,并向线程池提交10个任务。然后通过一个while循环不断地获取队列的大小并输出。可以看到,当线程池中的线程都在执行任务时,队列中会有一些任务等待执行。
阅读全文