package 多线程;import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class PandCnewLock {public static void main(String[] args) {
//          Producer p= new Producer2();
//          Consumer c = new Consumer2();
//          new Thread(p,"生产者").start();
//          new Thread(p,"生产者").start();
//          new Thread(c,"消费者").start();
//          new Thread(c,"消费者").start();new Thread(new Producer2(),"生产者").start();new Thread(new Consumer2(),"消费者").start();new Thread(new Producer2(),"生产者").start();new Thread(new Consumer2(),"消费者").start();}}class Producer2 implements Runnable{Resource2 r = Resource2.getRes();@Overridepublic void run() {while(true)r.produce("商品:");}}class Consumer2 implements Runnable{Resource2 r = Resource2.getRes();@Overridepublic void run() {while(true)r.consume();}}class Resource2{private int count;private boolean flag=false;static Resource2 r = new Resource2();Lock lock = new ReentrantLock();Condition cp = lock.newCondition();Condition cc = lock.newCondition();private Resource2() {}public static Resource2 getRes(){return r;}public void produce(String name){lock.lock();//上锁try {while(!flag)try {cp.await(); //与此 Condition 相关的锁以原子方式释放,并且出于线程调度的目的,将禁用当前线程,} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}name = name+count++;flag=false;System.out.println(Thread.currentThread().getName()+" .........生产商品:"+count);cc.signal();//唤醒一个cc上等待线程。} finally {lock.unlock();}}public void consume(){lock.lock();try {while(flag)try {cc.await();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}flag=true;System.out.println(Thread.currentThread().getName()+" ======消费商品:"+count);cp.signal();} finally {lock.unlock();}}}

转载于:https://blog.51cto.com/jiangzuun2014/1441287

多线程——生产者与消费者(多)1.5新锁,问题解决相关推荐

  1. Java多线程-生产者与消费者

    Java多线程生产者与消费者,准确说应该是"生产者-消费者-仓储"模型,使用了仓储,使得生产者消费者模型就显得更有说服力. 对于此模型,应该明确一下几点: 1.生产者仅仅在仓储未满 ...

  2. java多线程生产者与消费者问题_Java多线程详解之四:生产者消费者问题

    一.问题描述 生产者消费者问题(Producer-Consumer problem),也称有限缓冲区问题(Bounded-buffer promblem),是一个多线程同步问题的经典案例.对于一个固定 ...

  3. java多线程生产者与消费者问题_java多线程实现生产者与消费者问题

    生产者与消费者多线程实现,首先的问题就是同步,就是关于临界资源的访问 我们首先来定义一个临界资源类,这里设为Q class Q { int z=4; } 这个int型的z就是我假设的临界资源的个数 然 ...

  4. java多线程生产者与消费者案例_多线程操作实例——生产者与消费者

    面对多线程学习生产者与消费者是最基本的实例 对于java后端开发的人员必须要掌握,还有考研考试计算机操作系统的同鞋. 下面是三个实例对于生产者与消费者的的例子,层层递进,逐步解决问题. 问题:生产者- ...

  5. C++多线程-生产者与消费者模型

    生产者-消费者是很有意思的一种算法.它的存在主要是两个目的,第一就是满足生产者对资源的不断创造:第二就是满足消费者对资源的不断索取.当然,因为空间是有限的,所以资源既不能无限存储,也不能无限索取. 生 ...

  6. Java基础进阶多线程-生产者和消费者模式

    1.什么是"生产者和消费者模式"? 生产线程负责生产,消费线程负责消费 生产线程和消费线程要达到均衡 这是一种特殊的业务需求,在这种特殊的情况下需要使用wait方法和notify方 ...

  7. c++多线程生产者与消费者问题代码

    1.目录结构 2.代码 BufferPool.h #ifndef BUFFERPOOL #define BUFFERPOOL #include<windows.h> #include< ...

  8. 爬虫多线程生产者与消费者

    #-*-coding:utf-8-*- # -*-coding:utf-8-*- import threading, time, requests, json from queue import Qu ...

  9. Java 多线程-生产者、消费者

    一.整体代码 ThreadDemo.java public class ThreadDemo { public static void main(String[] args) { Godown god ...

最新文章

  1. 欧拉回路与欧拉路(模板)
  2. D2前端技术论坛之网页无障碍学习笔记
  3. 使用git时报错出现vim.exe.stackdump
  4. PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用
  5. 学python要多久-目前Python学习需要多长时间?老男孩Python入门培训
  6. 【CCCC】L2-012 关于堆的判断 (25分),,手写堆,二叉树编号,向上调整
  7. 工作流图形设计器参考资料
  8. uniapp开发原生android插件,uni-app原生插件(native plugin)开发指南
  9. 计算机文化书签,《计算机文化基础》EXCEL-机试[1]
  10. html特殊符号怎么输入法,教您特殊符号怎么打出来
  11. Python项目实战化:爬取堆糖网研究所美好生活照
  12. 使用IDEA编写Java程序时遇到的小提醒Common part can be extracted from ‘if‘
  13. 【数学解析几何】C_几种常见的函数曲线——(典型曲线图)
  14. swift 学习-- 元组
  15. 穿戴式设备应该新机遇--可以测心率的光感小米手环
  16. 程序员去外包公司有前途吗?
  17. 网易北京研发中心-网易传媒部门深度学习算法实习生面试总结
  18. FPGA错误集锦(二):Output pins are stuck at VCC or GND
  19. Point Cloud Labeling Tool使用说明
  20. 单神经元PID控制+Simulink控制系统仿真

热门文章

  1. 微软 Internet 信息服务器(IIS) 5.0 和 6.0 状态代码说明
  2. 写了一个好玩的小软件, 监视鼠标以及键盘的动作, 全局钩子. HowTired
  3. JSP内置对象—session
  4. 使用代码配置 NHibernate
  5. linux下的lamp环境的搭建!!!
  6. 【转】大端模式与小端模式、网络字节顺序与主机字节顺序 (经典)
  7. 【阿里云新品发布·周刊】第12期
  8. Glass Dragon
  9. jchdl - RTL实例 - And
  10. MongoDB报表实例 -- 标签成员方案