packagelocks;importjava.util.Random;importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;public classAppOfficial {/*** BoundedBuffer 是一个定长100的集合,当集合中没有元素时,take方法需要等待,直到有元素时才返回元素

* 当其中的元素数达到最大值时,要等待直到元素被take之后才执行put的操作

*@authoryukaizhao

**/

static classBoundedBuffer {final Lock lock = newReentrantLock();final Condition notFull =lock.newCondition();final Condition notEmpty =lock.newCondition();final Object[] items = new Object[100];intputptr, takeptr, count;public void put(Object x) throwsInterruptedException {

System .out.println("put wait lock");

lock.lock();

System.out.println("put get lock");try{while (count ==items.length) {

System.out.println("buffer full, please wait");

notFull.await();

}

items[putptr]=x;if (++putptr ==items.length)

putptr= 0;++count;

notEmpty.signal();

}finally{

lock.unlock();

}

}public Object take() throwsInterruptedException {

System.out.println("take wait lock");

lock.lock();

System.out.println("take get lock");try{while (count == 0) {

System.out.println("no elements, please wait");

notEmpty.await();

}

Object x=items[takeptr];if (++takeptr ==items.length)

takeptr= 0;--count;

notFull.signal();returnx;

}finally{

lock.unlock();

}

}

}public static voidmain(String[] args) {final BoundedBuffer boundedBuffer = newBoundedBuffer();

Thread t1= new Thread(newRunnable() {

@Overridepublic voidrun() {

System.out.println("t1 run");for (int i=0;i<1000;i++) {try{

System.out.println("putting..");

boundedBuffer.put(Integer.valueOf(i));

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}

}) ;

Thread t2= new Thread(newRunnable() {

@Overridepublic voidrun() {for (int i=0;i<1000;i++) {try{

Object val=boundedBuffer.take();

System.out.println(val);

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}

}) ;

t1.start();

t2.start();

}

}

mysql中condition的用法_理解Condition的用法相关推荐

  1. 面试mysql中怎么创建索引_阿里面试:MySQL如何设计索引更高效?

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  2. mysql中having的例子_有关mysql中having子句对组记录进行筛选的例子

    mysql中having的用法having字句,筛选成组后的各种数据,where字句在聚合前先筛选记录,即它作用在group by和having字句前,而 having子句在聚合后对组记录进行筛选. ...

  3. mysql的分区技术作用_理解MySQL数据库分区管理的技术细节

    在MySQL数据库中,表的不同部分在不同的位置被存储为单独的表.分区主要就是用来解决表在不同的位置存储的问题.在其他数据库中,也会存在这种情况.他们将这种类型的数据表称之为分区表.分区的管理,对于My ...

  4. mysql中jxgl什么意思_使用Management Studio按下表信息在JXGL数据库中创建名为CJ的成绩表。...

    [单选题]Java源文件和编译后的文件扩展名分别为() [简答题]1.请大家做完实验后将数据填写到表格相应空格中,教师验收,当堂签字确认. 2.课下按照指导书上关于实验报告的书写部分完成数据处理.总结 ...

  5. alter在MySQL中是什么意思_MySql之ALTER命令用法详细解读(转)

    本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的. USE learning;(自己要提前建好) CREATE TABLE student(id IN ...

  6. mysql中如何设置时区_如何设置MySQL的时区?

    我认为这可能是有用的: 有三个位置可以在MySQL中设置时区: 在[mysqld]部分中的"my.cnf"文件中default-time-zone='+00:00' @global ...

  7. python向mysql中添加数据标签_用python在MySQL中写入数据和添加数据

    在笔者之前的博文中,已介绍了用python连接与mysql数据库的知识.包括如何安装python连接mysql的pymysql包,如何通过cusor语句将python与mysql连接起来,以及如何用p ...

  8. mysql中Bname表示什么_《MY SQL实用教程》期末考试题

    一.单选 1.在SQL语言中的SELECT语句中,用于实现选择运算的句子是(B) A.FOR B.WHERE C.WHILE D.IF 2.设置语句结束的命令是(C) A.set B.end C.de ...

  9. mysql中转换成字符串_如何在R中转换字符串的大小写?

    mysql中转换成字符串 Hello, folks. In this tutorial we are going to convert the case of the string in R. The ...

最新文章

  1. 鸿蒙不算安卓系统吗,加入鸿蒙≠使用鸿蒙,鸿蒙不属于华为也仅限于华为
  2. c++拷贝、赋值和销毁的简单介绍
  3. python语言编写一个生成九宫格图片的代码_python实现图片九宫格分割
  4. 在每天下午五点使用计算机,邮件攻击主要是_每天下午5点使用计算机_apt的攻击目标一般不是...
  5. python中编函数_在python中编写函数
  6. Bootstrap创建按钮组
  7. php短信接代码,php短信接口代码
  8. Excel 条件格式使用方法
  9. deb,命令行安装与软件中心安装有差异
  10. C++中使用GSoap
  11. 斐波那契数列c语言编程递归,C语言实现Fibonacci数列递归
  12. Mugeda(木疙瘩)H5案例课—世界名画抖抖抖起来了-岑远科-专题视频课程
  13. 渗透测试与漏洞扫描详解
  14. 【Linux命令】mergecap命令的用法
  15. 第五项修炼与架构师感想
  16. U-Net论文阅读(逐句翻译+精读)
  17. 功能测试的测试点全集
  18. 公司企业微信公众号怎么创建小程序?
  19. 逍遥android模拟器设置,逍遥安卓模拟器更改分辨率的具体操作方法
  20. 2021朋友圈都在传的10本书,找到了

热门文章

  1. IPO观察丨绿源持续推进IPO,这次不止“一部车能骑10年”
  2. DirectUI 入门(一) 介绍及配置环境
  3. python基础之变量类型list
  4. 有什么平价好用的蓝牙耳机?高性价比蓝牙耳机推荐
  5. pnpm_什么是pnpm?
  6. c盘满了怎么办【保姆级操作】
  7. Pedestrian Collision Avoidance System for Scenarios with Occlusions--有遮挡情况下的行人避让系统
  8. 使用NAT从外网访问内网
  9. 中国式教育-虎妈猫爸给我的启发
  10. 物联网中设备与服务器通信使用什么网络协议?