Thread thread = new Thread(() -> {});thread.start();执行完后,如何关闭
时间: 2024-09-26 22:02:20 浏览: 15
在Java中,`Thread` 对象一旦启动(调用 `start()`),它的生命周期就由操作系统和 JVM 决定。`run()` 方法会在新的线程中异步执行。如果你想要手动结束线程的执行,通常有两种情况:
1. **使用中断(Interrupting the Thread)**: 可以通过调用 `Thread.interrupt()` 来中断正在运行的任务,如果任务内部有捕获 `InterruptedException` 的代码,它会被抛出。然后在 `run()` 方法中检查并响应中断。
```java
// 创建并启动线程
Thread thread = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) { // 检查是否被中断
// 业务逻辑
}
System.out.println("Thread interrupted.");
});
thread.start();
// 当你想中断时
if (!thread.isAlive()) {
// 线程已经结束
} else {
thread.interrupt(); // 发送中断信号
}
```
2. **使用守护线程(Daemon Thread)**: 如果一个 `Thread` 被声明为守护线程(通过构造函数传递 `Thread::daemon` 参数或在 `setDaemon(true)` 设置),那么当主应用退出时,守护线程也会自然终止。
```java
thread.setDaemon(true); // 将其设为守护线程
thread.start();
```
然而,直接依赖于守护线程可能会导致难以调试的问题,因为守护线程不会阻止应用退出。一般建议避免过多使用守护线程。