Java中线程等待,线程唤醒,线程加入,线程关闭的方法
时间: 2023-08-05 21:34:59 浏览: 53
Java 中线程等待、线程唤醒、线程加入和线程关闭的方法如下:
1. 线程等待:使用 wait() 方法将线程置于等待状态,并释放该线程持有的锁。
2. 线程唤醒:使用 notify() 或 notifyAll() 方法唤醒一个或多个处于等待状态的线程,使其重新竞争锁。
3. 线程加入:使用 join() 方法等待一个线程执行完成,当前线程会被挂起,直到等待的线程执行完成。
4. 线程关闭:通过设置标志位或中断信号实现线程的关闭,线程需要在执行任务完成后自行退出。
具体使用方法可以参考以下示例代码:
```java
// 线程等待示例
synchronized (lock) {
while (condition is not met) {
lock.wait();
}
}
// 线程唤醒示例
synchronized (lock) {
lock.notify(); // 唤醒一个处于等待状态的线程
lock.notifyAll(); // 唤醒所有处于等待状态的线程
}
// 线程加入示例
Thread t1 = new Thread(() -> {
// 线程执行的任务
});
t1.start();
t1.join(); // 等待 t1 线程执行完成
// 线程关闭示例
volatile boolean flag = true;
Thread t2 = new Thread(() -> {
while (flag) {
// 线程执行的任务
}
});
t2.start();
// 设置线程关闭标志位
flag = false;
// 中断线程
t2.interrupt();
```
需要注意的是,线程等待和唤醒的操作必须在同步代码块内进行,否则会抛出 IllegalMonitorStateException 异常。线程关闭需要在任务完成后自行退出,否则可能会导致资源泄露等问题。