共计 709 个字符,预计需要花费 2 分钟才能阅读完成。
WAITING 期待唤醒状态( 线程之间的通信 )
进入 Timewaiting(计时期待)有两法:
- sleep(),线程睡醒后进入 Runable/ 阻塞状态
- wait(long m),完结后没有被唤醒,会主动醒来
只有锁对象能力调用 wait 办法和 notify 办法
public class WaitAndNotify {public static void main(String[] args) {
// 创立锁对象
Object obj = new Object();
// 顾客线程
new Thread() {
@Override
public void run() {
// 保障 wait 和 notify 只能有一个执行
synchronized (obj) {System.out.println("买多少包子");
// 调用 wait 办法, 因为父类没有 throw 异样,所以只能用 try...catch
try {obj.wait();
} catch (InterruptedException e) {e.printStackTrace();
}
// 唤醒之后执行的代码
System.out.println("包子曾经做好,开吃");
}
}
}.start();
// 老板线程
new Thread() {
@Override
public void run() {
try {Thread.sleep(5000);
} catch (InterruptedException e) {e.printStackTrace();
}
synchronized (obj) {System.out.println("曾经做好了");
obj.notify();}
}
}.start();;}
}
唤醒(2 法):
- notify() 唤醒单个
- notifyAll() 唤醒全副
正文完