Java中线程池如何实现线程状态管理与等待唤醒机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1861个文字,预计阅读时间需要8分钟。
1. 概念+线程间状态互相转换,如待唤醒案例(线程间的通信)+实现:待唤醒案例:线程间的通信+创建一个客服线程(消费者):告知老板所需的包裹种类和数量
1.概念
线程一共有6中状态,相互之间可以互相转换。
等待唤醒案例(线程之间的通信)
实现:
等待唤醒案例:线程之间的通信
创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WAITING状态(无限等待)
创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子
注意:
顾客和老板线程必须使用同步代码块包裹起来,保证等待和唤醒只能有一个在执行
同步使用的锁对象必须保证唯一
只有锁对象才能调用wait和notify方法
Obejct类中的方法
void wait()
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
void notify()
唤醒在此对象监视器上等待的单个线程。
本文共计1861个文字,预计阅读时间需要8分钟。
1. 概念+线程间状态互相转换,如待唤醒案例(线程间的通信)+实现:待唤醒案例:线程间的通信+创建一个客服线程(消费者):告知老板所需的包裹种类和数量
1.概念
线程一共有6中状态,相互之间可以互相转换。
等待唤醒案例(线程之间的通信)
实现:
等待唤醒案例:线程之间的通信
创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WAITING状态(无限等待)
创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子
注意:
顾客和老板线程必须使用同步代码块包裹起来,保证等待和唤醒只能有一个在执行
同步使用的锁对象必须保证唯一
只有锁对象才能调用wait和notify方法
Obejct类中的方法
void wait()
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
void notify()
唤醒在此对象监视器上等待的单个线程。

