zoukankan      html  css  js  c++  java
  • 线程间通信——等待唤醒机制及买卖包子案例

    线程间通信——等待唤醒机制,避免争夺同一资源;

     锁对象可以是任意Object类的子类对象;

    包子案例:

    包子案例——生产者和消费者:

    代码实现:

    关键就是在于两个线程使用同一个锁对象! 这边是主程序调用这两个线程时候传入的同一个对象!

    包子铺线程类——生产者:

    其中,baozi类作为成员变量,并且重载了带参的构造方法;

    锁对象为调用包子铺带参的构造方法传入的这个包子变量bz;

    调用点wait方法必须是锁对象调用,锁对象调用wait方法之后当前线程就进入等待状态,另外一个线程此时应该是正在执行;

     锁对象调用notify方法之后,唤醒另外一个线程,自己则进入等待状态;

    模2则有两种情况;

    吃货线程类——消费者:

    前面和另外一个线程生产者一样,需要包子类作为成员变量,传入有参构造方法;

    关键在于生产者和消费者两个的锁对象是同个对象;使用的同步代码块方式实现线程同步;

    主程序代码:

    其中,创建了包子对象之后,开启包子铺生产者和吃货消费者这两个线程,使用的匿名对象,调用有参构造方法,入参都是创建的包子对象;

    运行结果:

    两种包子一直在生产和被消费;

  • 相关阅读:
    581. 最短无序连续子数组
    217. 存在重复元素
    189. 旋转数组
    169. 多数元素
    122. 买卖股票的最佳时机 II
    119. 杨辉三角 II
    118. 杨辉三角
    外显子分析思路总结(Exome Sequencing Analysis review)
    宁夏采样记20181129
    haploview出现“results file must contain a snp column”的解决方法
  • 原文地址:https://www.cnblogs.com/wmqiang/p/10666181.html
Copyright © 2011-2022 走看看