mysql中condition的用法_理解Condition的用法
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的用法相关推荐
- 面试mysql中怎么创建索引_阿里面试:MySQL如何设计索引更高效?
有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...
- mysql中having的例子_有关mysql中having子句对组记录进行筛选的例子
mysql中having的用法having字句,筛选成组后的各种数据,where字句在聚合前先筛选记录,即它作用在group by和having字句前,而 having子句在聚合后对组记录进行筛选. ...
- mysql的分区技术作用_理解MySQL数据库分区管理的技术细节
在MySQL数据库中,表的不同部分在不同的位置被存储为单独的表.分区主要就是用来解决表在不同的位置存储的问题.在其他数据库中,也会存在这种情况.他们将这种类型的数据表称之为分区表.分区的管理,对于My ...
- mysql中jxgl什么意思_使用Management Studio按下表信息在JXGL数据库中创建名为CJ的成绩表。...
[单选题]Java源文件和编译后的文件扩展名分别为() [简答题]1.请大家做完实验后将数据填写到表格相应空格中,教师验收,当堂签字确认. 2.课下按照指导书上关于实验报告的书写部分完成数据处理.总结 ...
- alter在MySQL中是什么意思_MySql之ALTER命令用法详细解读(转)
本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的. USE learning;(自己要提前建好) CREATE TABLE student(id IN ...
- mysql中如何设置时区_如何设置MySQL的时区?
我认为这可能是有用的: 有三个位置可以在MySQL中设置时区: 在[mysqld]部分中的"my.cnf"文件中default-time-zone='+00:00' @global ...
- python向mysql中添加数据标签_用python在MySQL中写入数据和添加数据
在笔者之前的博文中,已介绍了用python连接与mysql数据库的知识.包括如何安装python连接mysql的pymysql包,如何通过cusor语句将python与mysql连接起来,以及如何用p ...
- mysql中Bname表示什么_《MY SQL实用教程》期末考试题
一.单选 1.在SQL语言中的SELECT语句中,用于实现选择运算的句子是(B) A.FOR B.WHERE C.WHILE D.IF 2.设置语句结束的命令是(C) A.set B.end C.de ...
- mysql中转换成字符串_如何在R中转换字符串的大小写?
mysql中转换成字符串 Hello, folks. In this tutorial we are going to convert the case of the string in R. The ...
最新文章
- 鸿蒙不算安卓系统吗,加入鸿蒙≠使用鸿蒙,鸿蒙不属于华为也仅限于华为
- c++拷贝、赋值和销毁的简单介绍
- python语言编写一个生成九宫格图片的代码_python实现图片九宫格分割
- 在每天下午五点使用计算机,邮件攻击主要是_每天下午5点使用计算机_apt的攻击目标一般不是...
- python中编函数_在python中编写函数
- Bootstrap创建按钮组
- php短信接代码,php短信接口代码
- Excel 条件格式使用方法
- deb,命令行安装与软件中心安装有差异
- C++中使用GSoap
- 斐波那契数列c语言编程递归,C语言实现Fibonacci数列递归
- Mugeda(木疙瘩)H5案例课—世界名画抖抖抖起来了-岑远科-专题视频课程
- 渗透测试与漏洞扫描详解
- 【Linux命令】mergecap命令的用法
- 第五项修炼与架构师感想
- U-Net论文阅读(逐句翻译+精读)
- 功能测试的测试点全集
- 公司企业微信公众号怎么创建小程序?
- 逍遥android模拟器设置,逍遥安卓模拟器更改分辨率的具体操作方法
- 2021朋友圈都在传的10本书,找到了