线程通信之等待唤醒机制(wait / notify),线程通信(生产者、消费者)代码实现

线程通信:多个线程在处理同一个资源,处理动作(线程任务)不同。

例如:包子生产消费问题。消费线程和生产线程处理同一资源包子,这时候根据资源包子的状态问题消费线程和生产线程就存在通信问题。

为什么要处理多线程通信问题:在多线程的并发执行时,默认CUP随机切换线程,当我们需要使用多线程完成一项任务时,我们希望多个线程能有规律的执行,这是我们就需要线程之前协调通信,以此达到共享一份数据。

 

等待唤醒机制:线程执行规定的操作后进入等待状态(wait),在其他线程完成指定任务代码后将其唤醒(notify)。

 

Java线程通信

  • java.lang.Object
void

wait()

导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法。

void wait(long timeout)

导致当前线程等待,直到另一个线程调用 notify()方法或该对象的 notifyAll()方法,或者指定的时间已过。

voidnotify()

唤醒正在等待对象监视器的单个线程。

voidnotifyAll()

唤醒正在等待对象监视器的所有线程。

 

 

 消费者/生产者/包子例子:

共享资源:包子(多线程下实现对包子的同步线程操作),

生产者:a.无包子时生产包子唤醒消费者线程吃包子。b.有包子时进入等待状态(直到包子被消耗,消费者唤醒继续生产)。

消费者:a.无包子是进入等待状态。b.有包子时消耗包子,唤醒生产者线程生产包子。

 包子类实现:重写toString()以便于在System.out.println()直接输出XX馅包子。

 生产者类实现:线程类,实现当有包子(flag = true)时wait。没有包子是生产包子唤醒notify消费者线程吃包子。

 消费者类实现

 

 Test类实现

 

 

运行测试

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值