第五章--Java多线程和并发编程 第四节--Java多线程管理

多线程管理(1):

线程类:

通过继承Thread或实现Runnable

通过start方法,调用run方法,run方法工作

线程run结束后,线程退出

粗粒度:子线程与子线程之间、和main线程之间缺乏同步

细粒度:线程之间有同步协作(让线程等待、线程发通知 / 唤醒线程、终止某个线程)

多线程管理(2):

线程的全部状态:

---- NEW:刚刚创建(new),当一个线程对象被new出来的时候,只是在内存里占据一定空间,但是没有被运行起来,因为start方法还没有启动

---- RUNNABLE:就绪态(start),调用线程的start方法,这个线程就进入了一个就绪态,它准备好运行了,但是还没有运行,因为他要等待CPU降临到它头上来了

---- RUNNING:运行中(run),在线程进入就绪态时,且被CPU挑中后,就会进入运行状态,run方法就正式地启动了(start方法和run方法中间的这段时间就是线程等待CPU调度的时间,CPU在这个线程对象执行完一个时间片之后,就把这个线程对象放下来去执行另一个线程对象,从运行态变成就绪态)

---- BLOCK:阻塞(sleep),由于某种条件还没有满足,暂时不需要CPU了,就进入了一个BLOCK状态,这是比就绪态还要更差的状态,它就等待那个条件满足

---- TERMINATED结束,意味着一个线程被终止了

多线程管理(3):

Thread的部分API已经废弃

----暂停和恢复 suspend / resume

---- 消亡 stop / destroy

可以使用的API:‘

---- sleep,时间一到,自己会醒来(休眠时进入block状态,休眠结束进入runnable就绪态)

---- wait / notify / notifyAll,等待,需要别人来唤醒

---- join,当前线程等待另外一个线程结束

---- interrupt,线程向另外一个线程发送中断信号(你可以停止了),当另外一个线程收到信号,会触发InterruptedException异常(可解除阻塞),并进行下一步处理(终止或者别的操作)

举个例子:生活者和消费者问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值