Java中判断线程是否执行完毕有多种方式:
1. 使用Thread类的join()方法:调用线程的join()方法可以等待线程执行完毕,然后再继续执行后面的代码。
```java
Thread thread = new Thread(() -> {
// 线程执行的代码
});
thread.start(); // 启动线程
thread.join(); // 等待线程执行完毕
// 线程执行完毕后的代码
```
2. 使用Thread类的isAlive()方法:调用线程的isAlive()方法可以判断线程是否还在运行。
```java
Thread thread = new Thread(() -> {
// 线程执行的代码
});
thread.start(); // 启动线程
while (thread.isAlive()) {
// 等待线程执行完毕
}
// 线程执行完毕后的代码
```
3. 使用CountDownLatch类:CountDownLatch是一个同步辅助类,可以让主线程等待其他线程执行完毕。
```java
CountDownLatch latch = new CountDownLatch(1);
Thread thread = new Thread(() -> {
// 线程执行的代码
latch.countDown(); // 线程执行完毕后调用countDown()方法
});
thread.start(); // 启动线程
latch.await(); // 等待线程执行完毕
// 线程执行完毕后的代码
```
4. 使用ExecutorService类:ExecutorService是Java中用于管理线程池的类,可以通过调用submit()方法提交一个线程任务,并通过调用get()方法等待任务执行完毕。
```java
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future> future = executorService.submit(() -> {
// 线程执行的代码
});
executorService.shutdown(); // 关闭线程池
try {
future.get(); // 等待线程执行完毕
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
// 线程执行完毕后的代码
```