目录
五、线程状态
5.1 线程状态概述
5.2 等待唤醒案例:线程之间的通信
5.2.1 案例分析
5.2.2 代码实现
package com.cpz.demo6_Thread_WaitAndNotify;
public class Demo1 {
public static void main(String[] args) {
// 创建锁对象,保证唯一
Object obj = new Object();
// 创建一个顾客线程(消费者)
new Thread(){
@Override
public void run() {
// 一直等着买包子
while (true){
// 保证等待和唤醒的线程只能有一个执行,需要使用同步技术
synchronized (obj){
System.out.println("顾客告知老板要的包子的种类和数量");
try {
obj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 唤醒之后执行的代码
System.out.println("包子已经做好,开吃!");
System.out.println("=============================");
}
}
}
}.start();
// 创建一个老板线程(生产者)
new Thread(){
@Override
public void run() {
// 一直做包子
while(true){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 保证等待和唤醒的线程只能有一个执行,需要使用同步技术
synchronized (obj){
System.out.println("老板5秒钟之后做好包子,告知顾客,可以吃包子了");
obj.notify();
}
}
}
}.start();
}
}
未完成