java判断线程池状态
时间: 2023-12-29 12:25:52 浏览: 33
在Java中,可以通过`ExecutorService`接口的`isShutdown()`和`isTerminated()`方法来判断线程池的状态。
`isShutdown()`方法用于判断线程池是否已经关闭。如果线程池已经关闭,则返回`true`;否则返回`false`。
`isTerminated()`方法用于判断线程池中的所有任务是否已经执行完毕并且线程池已经关闭。如果所有任务已经执行完毕并且线程池已经关闭,则返回`true`;否则返回`false`。
以下是一个示例代码,演示了如何判断线程池的状态:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolStatusExample {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
// 执行任务
for (int i = 0; i < 10; i++) {
final int temp = i;
executorService.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ", i: " + temp);
}
});
}
// 关闭线程池
executorService.shutdown();
// 判断线程池状态
boolean isShutdown = executorService.isShutdown();
boolean isTerminated = executorService.isTerminated();
System.out.println("线程池是否已经关闭:" + isShutdown);
System.out.println("线程池是否已经终止:" + isTerminated);
}
}
```
运行以上代码,输出结果如下:
```
pool-1-thread-1, i: 0
pool-1-thread-2, i: 1
pool-1-thread-3, i: 2
pool-1-thread-4, i: 3
pool-1-thread-5, i: 4
pool-1-thread-1, i: 5
pool-1-thread-2, i: 6
pool-1-thread-3, i: 7
pool-1-thread-4, i: 8
pool-1-thread-5, i: 9
线程池是否已经关闭:true
线程池是否已经终止:false
```