thread wait用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

thread wait用法
Thread.Wait是一个线程同步的方法,它可用于暂停当前线程
的执行,直到另一个线程完成其任务。

使用的一般步骤如下:
1. 创建一个Thread对象,并指定一个方法或代码块作为线程
执行的任务。

2. 启动线程,使其开始执行任务。

3. 在另一个线程中,使用Thread.Wait方法来使当前线程等待,直到目标线程完成任务。

4. 目标线程完成任务后,通过调用Thread.Notify或
Thread.NotifyAll方法来唤醒等待的线程。

例如,假设有两个线程,一个用于打印奇数,另一个用于打印偶数。

我们希望这两个线程交替执行,并且其中一个线程必须等待另一个线程完成后才能执行。

```java
class PrintNumbers {
private boolean isOddPrinted = false;
public synchronized void printOdd() {
while (isOddPrinted) {
try {
wait(); // 等待另一个线程打印偶数
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 打印奇数
System.out.println("Odd: " + Thread.currentThread().getId()); isOddPrinted = true;
// 唤醒等待的线程
notifyAll();
}
public synchronized void printEven() {
while (!isOddPrinted) {
try {
wait(); // 等待另一个线程打印奇数
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 打印偶数
System.out.println("Even: " + Thread.currentThread().getId()); isOddPrinted = false;
// 唤醒等待的线程
notifyAll();
}
}
public class Main {
public static void main(String[] args) {
PrintNumbers numbers = new PrintNumbers();
Thread thread1 = new Thread(() -> {
for (int i = 1; i <= 10; i += 2) {
numbers.printOdd();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 2; i <= 10; i += 2) {
numbers.printEven();
}
});
thread1.start();
thread2.start();
}
}
```
在上面的示例中,通过使用wait和notifyAll方法,我们实现了两个线程交替打印奇数和偶数的功能。

每个线程都在自己的任务完成后等待另一个线程完成它的任务。

相关文档
最新文档