Lock&Condition
来源:互联网 发布:小米手机数据不能上网 编辑:程序博客网 时间:2024/06/05 22:31
package com.ixhong.base.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ThreeConditionCommunication { /** * @param args*/public static void main(String[] args) { final Business business = new Business(); new Thread( new Runnable() { @Overridepublic void run() { for(int i=1;i<=50;i++){ business.sub2(i); } } } ).start(); new Thread( new Runnable() { @Overridepublic void run() { for(int i=1;i<=50;i++){ business.sub3(i); } } } ).start(); for(int i=1;i<=50;i++){ business.main(i); } } static class Business { Lock lock = new ReentrantLock(); Condition condition1 = lock.newCondition(); Condition condition2 = lock.newCondition(); Condition condition3 = lock.newCondition(); private int shouldSub = 1; public void sub2(int i){ lock.lock(); try{ while(shouldSub != 2){ try { condition2.await(); } catch (Exception e) { // TODO Auto-generated catch blocke.printStackTrace(); } } for(int j=1;j<=10;j++){ System.out.println("sub2 thread sequence of " + j + ",loop of " + i); } shouldSub = 3; condition3.signal(); }finally{ lock.unlock(); } } public void sub3(int i){ lock.lock(); try{ while(shouldSub != 3){ try { condition3.await(); } catch (Exception e) { // TODO Auto-generated catch blocke.printStackTrace(); } } for(int j=1;j<=20;j++){ System.out.println("sub3 thread sequence of " + j + ",loop of " + i); } shouldSub = 1; condition1.signal(); }finally{ lock.unlock(); } } public void main(int i){ lock.lock(); try{ while(shouldSub != 1){ try { condition1.await(); } catch (Exception e) { // TODO Auto-generated catch blocke.printStackTrace(); } } for(int j=1;j<=100;j++){ System.out.println("main thread sequence of " + j + ",loop of " + i); } shouldSub = 2; condition2.signal(); }finally{ lock.unlock(); } } }}
0 0
- Lock&Condition
- Lock-Condition
- Lock & Condition
- Lock、Condition
- Lock & condition
- Java Lock Condition
- java lock condition
- Lock & Condition 初识
- lock和condition
- Lock的Condition使用
- lock condition 实例
- 源码解析 Lock Condition
- 黑马程序员---Lock和Condition
- Java多线程4- Lock、Condition
- Java多线程4- Lock、Condition
- 《黑马程序员》Lock&Condition练习
- 线程并发工具--Lock&Condition
- 锁机制:synchronized、Lock、Condition
- swift泛型
- 【转载】JVM内存分配与调优参数列表
- EXTJS xtype总结
- 【转载】JVM类加载机制小结
- 生产者消费者实例
- Lock&Condition
- 【转载】ArrayList 中数据删除
- 【转载】Reference
- Android启动过程深入解析
- BlockingQueue
- Android App 隐藏标题栏+状态栏+导航栏
- 【转载】并发数据结构
- 浅谈h5移动端页面的适配问题
- 【转载】hadoop/hbase 搭建