java线程学习之Condition
来源:互联网 发布:贪心算法实例 编辑:程序博客网 时间:2024/05/19 18:48
package learn.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/*Condition,和ReentrantLock配合使用提供唤醒线程和暂停线程功能 */public class Demo14 { static Lock lock = new ReentrantLock(); static int count = 0; static Condition condition = lock.newCondition();// 必须配合lock.lock();lock.unlock();使用 public static void main(String[] args) { Thread t1 = new Thread() { @Override public void run() { lock.lock(); if (count < 5) { System.out.println("线程1未达到业务要求,暂停中,等待线程2处理到达到要求后唤醒"); try { condition.await();// 暂停线程并释放锁 System.out.println("我是线程1后面的代码"); } catch (InterruptedException e) { e.printStackTrace(); } } lock.unlock(); } }; Thread t2 = new Thread() { @Override public void run() { lock.lock(); while (count < 10) { count++; System.out.println("线程2业务处理中: " + count); try { Thread.sleep(1000); if (count == 5) { condition.signal(); System.out.println("唤醒线程1"); lock.unlock();//调用signal()方法后,线程2并不会释放锁,需要手动释放线程2才会执行 } } catch (InterruptedException e) { e.printStackTrace(); } }// lock.unlock();// 这里释放锁,线程2执行完,线程1才会执行 } }; t1.start(); t2.start(); }}// 线程1未达到业务要求,暂停中,等待线程2处理到达到要求后唤醒// 线程2业务处理中: 1// 线程2业务处理中: 2// 线程2业务处理中: 3// 线程2业务处理中: 4// 线程2业务处理中: 5// 唤醒线程1// 我是线程1后面的代码// 线程2业务处理中: 6// 线程2业务处理中: 7// 线程2业务处理中: 8// 线程2业务处理中: 9// 线程2业务处理中: 10
阅读全文
0 0
- java线程学习之Condition
- java线程之Condition、ReentrantLock
- Java线程之Condition高效线程通信
- java 之 Condition 线程间通信
- java多线程学习之Condition,实现唤醒指定的部分线程
- Java高级之Lock&Condition实现线程同步通信
- java多线程之Condition实现更高效线程通信
- Java并发之线程间的通信Condition
- java线程系列---condition例子
- JAVA线程间协作:Condition
- JAVA多线程之Condition
- Java多线程之Condition
- 【Java基础之线程同步(三)】使用ReentrantLock Condition实现线程同步
- (六) Java多线程详解之线程锁Lock和Condition线程通信技术
- Java SE学习笔记:线程通信、生产者与消费者案例、线程状态(线程的生命周期)、线程操作、Condition类
- JAVA之wait¬ify&Condition
- (七)java多线程之Condition
- java并发编程之Condition
- 详解设计模式——适配器模式
- 死锁
- iOS--脚本配置Xcode Project(打包)
- Resource is out of sync with the file system的解决办法
- Linux子进程创建
- java线程学习之Condition
- python开发虚拟环境搭建步骤
- Android 消息机制
- 详解设计模式——外观模式
- [Qt]Qt--拖拽实现
- xcodebuild和xcrun实现自动打包iOS应用程序
- BZOJ 1588 营业额统计(TREAP)
- ffplay音视频同步分析(一)
- java多线程学习之Condition,实现唤醒指定的部分线程