Java中线程池如何实现线程状态管理与等待唤醒机制?

2026-05-26 06:430阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1861个文字,预计阅读时间需要8分钟。

Java中线程池如何实现线程状态管理与等待/唤醒机制?

1. 概念+线程间状态互相转换,如待唤醒案例(线程间的通信)+实现:待唤醒案例:线程间的通信+创建一个客服线程(消费者):告知老板所需的包裹种类和数量

1.概念

线程一共有6中状态,相互之间可以互相转换。

等待唤醒案例(线程之间的通信)

实现:

等待唤醒案例:线程之间的通信
创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WAITING状态(无限等待)
创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子

注意:
顾客和老板线程必须使用同步代码块包裹起来,保证等待和唤醒只能有一个在执行
同步使用的锁对象必须保证唯一
只有锁对象才能调用wait和notify方法

Obejct类中的方法
void wait()
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
void notify()
唤醒在此对象监视器上等待的单个线程。

阅读全文
标签:实现

本文共计1861个文字,预计阅读时间需要8分钟。

Java中线程池如何实现线程状态管理与等待/唤醒机制?

1. 概念+线程间状态互相转换,如待唤醒案例(线程间的通信)+实现:待唤醒案例:线程间的通信+创建一个客服线程(消费者):告知老板所需的包裹种类和数量

1.概念

线程一共有6中状态,相互之间可以互相转换。

等待唤醒案例(线程之间的通信)

实现:

等待唤醒案例:线程之间的通信
创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WAITING状态(无限等待)
创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子

注意:
顾客和老板线程必须使用同步代码块包裹起来,保证等待和唤醒只能有一个在执行
同步使用的锁对象必须保证唯一
只有锁对象才能调用wait和notify方法

Obejct类中的方法
void wait()
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
void notify()
唤醒在此对象监视器上等待的单个线程。

阅读全文
标签:实现