返回
多线程 — 线程的概念及notify()和wait()的使用
见解分享
2023-10-27 21:09:06
1. 多线程:并发编程的基础
在现代计算中,多线程已经成为一种必不可少的技术。它允许程序同时执行多个任务,从而提高效率和性能。多线程的实现方式有很多种,但最常见的是使用操作系统提供的线程库。在Java中,我们可以使用java.lang.Thread类来创建和管理线程。
2. notify()和wait():线程之间的通信
线程之间的通信是多线程编程中的一项重要任务。notify()和wait()是两个非常重要的线程通信方法。notify()方法用于唤醒一个正在等待的线程,而wait()方法用于使当前线程进入等待状态,直到被其他线程唤醒。
3. notify()和wait()的使用示例
public class MyThread extends Thread {
private boolean isReady = false;
public void run() {
synchronized (this) {
while (!isReady) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 执行任务
}
}
public void setReady(boolean isReady) {
synchronized (this) {
this.isReady = isReady;
notify();
}
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
// 等待一段时间,然后唤醒线程
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread.setReady(true);
}
}
在这个示例中,我们创建了一个名为MyThread的线程。该线程有一个名为isReady的布尔变量,用于指示线程是否准备就绪。线程的run()方法使用wait()方法进入等待状态,直到isReady变量被设置为true。主线程等待一段时间,然后使用setReady()方法将isReady变量设置为true,从而唤醒MyThread线程。
4. 总结
notify()和wait()是两个非常重要的线程通信方法。它们可以用于实现各种各样的多线程编程模式,如生产者-消费者模式、读写锁模式等。掌握这些方法的使用对于多线程编程来说是必不可少的。