_java5条件阻塞Condition的应用
wait 和notify 在 synchronized 包含的范围中 必须与synchronized 使用同一个对象
可以在一个锁中设定 多个 condition 来执行等待的方法,这样的好处就是能实现多个
方法之间的等待执行。例如下面例子 的两个condition
class BoundedBuffer {
final Lock lock = new ReentrantLock();
final Condition notFull = lock.newCondition(); //使用condition 来代替 wait 和 notify
final Condition notEmpty = lock.newCondition();
final Object[] items = new Object[100];
int putptr, takeptr, count;
public void put(Object x) throws InterruptedException {
lock.lock();
try {
while (count == items.length)
notFull.await();//这里要使用await 只是condition的专用方法
items[putptr] = x;
if (++putptr == items.length) putptr = 0;
++count;
notEmpty.signal();//这也是condition的专用方法
} finally {
lock.unlock();
}
}
public Object take() throws InterruptedException {
lock.lock();
try {
while (count == 0)
notEmpty.await();
Object x = items[takeptr];
if (++takeptr == items.length) takeptr = 0;
--count;
notFull.signal();
return x;
} finally {
lock.unlock();
}
}
转载于:https://www.cnblogs.com/mxyhws/p/3957225.html
_java5条件阻塞Condition的应用相关推荐
- python 线程超时设置_python 条件变量Condition(36)
文章首发微信公众号,微信搜索:猿说python 对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – ...
- Python 线程条件变量 Condition - Python零基础入门教程
目录 一.Python 线程条件变量 Condition 函数 二.Python 线程条件变量 Condition 原理 三.Python 线程条件变量 Condition 使用 四.Python 线 ...
- 对条件变量(condition variable)的讨论
作者:王东 1.1 什么是条件变量和条件等待? 简单的说: 条件变量(condition variable)是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待某个 ...
- SAP SD 基础知识之定价中的条件技术(Condition Technique in Pricing)
SAP SD 基础知识之定价中的条件技术(Condition Technique in Pricing) 一,定价程序Pricing Procedure 所有定价中允许的条件类型都包含在定价程序中: ...
- 定义定价用途的条件类型(Condition Types)
一.说明 条件的存取顺序(access sequences)可以设置若干个条件表(Condition Table),但仅有存取顺序还不能维护条件的记录.能够维护条件记录的是条件类型(Condition ...
- MyBatisPlus条件构造器Condition的用法
场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 基础搭建: https://blog.csdn.net/B ...
- python 很高兴问题_Python 3.7曾有一个很老的GIL竞态条件(race condition),我是这么解决的...
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 作者:Victor Stinner 作为Python最关键的组成部分之一:GIL(全局解释器锁),我花了4 ...
- 数据争用(data race) 和竞态条件(race condition)
在有关多线程编程的话题中,数据争用(data race) 和竞态条件(race condition)是两个经常被提及的名词,它们两个有着相似的名字,也是我们在并行编程中极力避免出现的.但在处理实际问题 ...
- 别混淆数据争用(data race) 和竞态条件(race condition)
在有关多线程编程的话题中,数据争用(data race) 和竞态条件(race condition)是两个经常被提及的名词,它们两个有着相似的名字,也是我们在并行编程中极力避免出现的.但在处理实际问题 ...
最新文章
- 颠覆性技术的兴起及其影响
- 硬核项目 | 用Arduino做一个神奇的悬浮灯!
- 计算机usb2.0失效,Win10电脑USB2.0-CRW没有驱动程序的解决方法
- C语言中Uint8_t数据类型
- vue2学习计划1-3 浏览器跨域问题(mock-api)
- 你应该要掌握的7种回归分析方法
- LeetCode:Remove Duplicates from Sorted List I II
- Java Timer、TimerTask
- arcgis重分类读不出值的解决办法?
- Viewpage+小圆点
- 手把手 VM虚拟机安装deepin系统
- Portraiture 3.5.6磨皮滤镜插件适用于Photoshop磨皮美化功能
- 2022-10-11 myql-exists子查询外表关联记录
- FZU 2158 数字密码
- colab使用入门(1)-安装库,保存/加载笔记本
- MySQL六大数据类型
- hiho 1082 : 然而沼跃鱼早就看穿了一切
- 在ArcGIS中创建Python工具(三)
- MacBook Pro M1 安装 MongoDB
- 一套简约线条手绘工作报告年终总结PPT模板