博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java.util.concurrent.locks.Condition 例子程序探讨
阅读量:6838 次
发布时间:2019-06-26

本文共 747 字,大约阅读时间需要 2 分钟。

API文档上例子如下:
class BoundedBuffer {
   final Lock lock = new ReentrantLock();
下面使用两个condition是否有必要?
   final Condition notFull  = lock.newCondition();
   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();
       items[putptr] = x;
       if (++putptr == items.length) putptr = 0;
       ++count;
       notEmpty.signal();
     } 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();
     }
   }
}

转载地址:http://qxwul.baihongyu.com/

你可能感兴趣的文章
SVN项目锁定解决方案
查看>>
[CODEVS] 2189 数字三角形W
查看>>
cannot find module 'cordova-common'
查看>>
面向对象数据库NDatabase_初识
查看>>
【转】POJ 2104 K-th Number(2)
查看>>
【转】Mutex使用方法(精辟)
查看>>
虚析构函数的使用
查看>>
将 Shiro 作为应用的权限基础
查看>>
第十一周例行报告
查看>>
ios程序连接真机调试
查看>>
A*寻路算法的探寻与改良(三)
查看>>
KVM基础功能——Cpu配置
查看>>
在C#用GDI+实现图形图像的任意变形效果(转载)
查看>>
Fork 一个仓库并同步
查看>>
Web测试实践-任务进度-Day02
查看>>
js观察者模式
查看>>
python画图matplotlib基础笔记
查看>>
windows10远程桌面连接及问题解决
查看>>
JavaScript学习笔记(七)——函数的定义与调用
查看>>
什么是守护线程?
查看>>