一、概念
wait 线程释放当前锁进入等待状态
notify 通知等待在该锁的其他线程“苏醒”
二、代码清单
package com.waitnotify;
public class NotifyAndWaitDemo {
public static void main(String[] args) {
Pepole p = new Pepole();
Thread twork = new Thread(new MakeWork(p));
Thread tweak = new Thread(new MakeWakeup(p));
twork.start();
tweak.start();
}
}
class MakeWakeup implements Runnable {
private Pepole pepole;
public MakeWakeup(Pepole p) {
this.pepole = p;
}
public void run() {
pepole.wakeup();
}
}
class MakeWork implements Runnable {
private Pepole pepole;
public MakeWork(Pepole p) {
this.pepole = p;
}
public void run() {
try {
pepole.work();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Pepole {
private boolean weak = false;
public synchronized void wakeup() {
weak = true;
notifyAll();
System.out.println(Thread.currentThread().getName()
+ " make pepole wake up");
}
public synchronized void work() throws InterruptedException {
System.out.println("come in work function..");
while (weak == false) {
wait();
}
System.out.println(Thread.currentThread().getName()
+ " make pepole working");
}
}
三、输出结果