线程状态以及唤醒机制

线程有5个状态:
新建(new):刚刚创建出来的线程
阻塞(block):正在等待锁对象的线程(没有抢夺到锁对象)
睡眠(waitting):处于无限等待状态,只有调用notify方法才能唤醒
暂停(sleep):自动放弃cpu的控制
销毁(terminated):结束线程

线程状态图

//等待唤醒机制的通信
/* 顾客告知(notify)老板 要买什么包子 
	老板开始做包子,顾客进入Waiting状态
	做好包子之后,老板告知(notify)顾客,顾客开始吃包子
	老板进入waiting状态,等待顾客notify要什么包子
*/

//代码实现
/*
	需要两个对象,一个顾客,一个老板
	然后用同步机制保证顾客和老板 等待和唤醒只能有一个在执行
	notify 和 wait 方法是通过对象来调用的
*/
public static void main(Stringp[]	args){
	//创建 一个锁对象
	Object obj = new Object();
	new Thread(){
		@override
		publice void run(){
			while(true){
					//保证同步
				synchronized(obj){
				// 顾客告知(notify)老板 要买什么包子 顾客进入waitting状态
					obj.wait();
					System.out.println("包子做好了,开吃");
				}
			}
		}
	}.start();
	
	new Thread(){
		@override
		publice void run(){
			while(true){
				//保证同步
				synchronized(obj){
				
				//花费5秒做包子
					obj.sleep(5000);
				// 做好包子之后,老板告知(notify)顾客,顾客开始吃包子
					obj.notify();
				}
			}
			
		}
	}.start();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值