wait() 方法会把自动释放Synchronized
notify() 方法会从wait状态的线程中随机叫醒一个
notifyAll() 方法会叫醒所有处理wait状态的线程
package com.xbb.thread;
public class WaitNotify {
private volatile int signle = 0;
public static void main(String[] args) throws Exception{
WaitNotify waitNotify = new WaitNotify();
new Thread(new Runnable() {
@Override
public void run() {
synchronized (waitNotify) {
try {
System.out.println("修改方法 - 进入");
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
waitNotify.setSignle(1);
waitNotify.notify();
System.out.println("修改方法 - 放行");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
synchronized (waitNotify) {
System.out.println("修改方法 - 读取");
while (waitNotify.getSignle() != 1) {
try {
waitNotify.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(waitNotify.getSignle());
}
}
}).start();
}
public int getSignle() {
return signle;
}
public void setSignle(int signle) {
this.signle = signle;
}
}