condition简单示例
在concurrent包中提供了condition接口,通过该接口可唤醒指定的某个线程,而不是采用随机唤醒的形式。
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; public class LockTest { private static Lock lock = new ReentrantLock();
private static Condition condition_1 = lock.newCondition();
private static Condition condition_2 = lock.newCondition(); public static void main(String[] args) throws InterruptedException {
/*Lock lock = new ReentrantLock();
Condition condition = lock.newCondition(); new Thread(() -> runLockMethod(lock, 1000),"thread-1").start();
new Thread(() -> runLockMethod(lock, 3000),"thread-2").start();
new Thread(() -> runLockMethod(lock, 5000),"thread-3").start();*/ LockTest test = new LockTest();
new Thread(() -> test.lockwait(condition_1), "thread-1").start();
new Thread(() -> test.lockwait(condition_2), "thread-2").start();
Thread.sleep(3000);
new Thread(() -> test.locksignal(condition_2), "thread-3").start();
new Thread(() -> test.locksignal(condition_1), "thread-4").start();
} /*private static void runLockMethod(Lock lock, long times) {
lock.lock();
try {
// List<Integer> list = Arrays.asList(1,2,3);
Thread.sleep(times);
System.out.println(Thread.currentThread().getName());
// list.forEach(System.out::println);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}*/ private void lockwait(Condition condition) {
lock.lock();
try {
System.out.println( Thread.currentThread().getName() +" start wait.......");
condition.await();
System.out.println( Thread.currentThread().getName() +" over wait.......");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
} private void locksignal(Condition condition) {
lock.lock();
try {
System.out.println(Thread.currentThread().getName() + " start notify....");
condition.signal();
} finally {
lock.unlock();
}
} }
condition简单示例的更多相关文章
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
- Web API 简单示例
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
- XML引入多scheme文件约束简单示例
XML引入多scheme文件约束简单示例,用company.xsd和department.xsd来约束company.xml: company.xsd <?xml version="1 ...
随机推荐
- A1001
两数相加,结果每三位添加一个逗号.一开始没有注意到%03d的问题,因为有某些数据逗号分割后高位带0,因此需要用0来补充空位. #include<iostream> #include< ...
- AndroidManifest.xml里加入不同package的component (Activity、Service里android:name里指定的值一般为句号加类名),可以通过指定完全类名(包名+类名)来解决
我们都知道对于多个Activity如果在同一个包中,在Mainfest中可以这样注册 <span style="font-size: small;"><?xml ...
- python-数据驱动
1.parameterized.parameterized import unittest from parameterized import parameterized,param class Te ...
- win8安装maven
1.下载并解压maven F:\maven\apache-maven-3.5.2 2. 设置环境变量 3. Path路径中添加maven的可执行文件目录(bin目录) 4.验证maven是否安装成功: ...
- [CF959E]Mahmoud and Ehab and the xor-MST题解
解法 又是一道结论题? 我的做法比较奇怪且没有证明 #include <cstdio> #include <cmath> #define ll long long int ma ...
- [CSP-S模拟测试]:飞(fly)(数状数组+简单几何)
题目描述 $liu\_runda$决定提高一下知识水平,于是他去请教郭神.郭神随手就给了$liu\_runda$一道神题,$liu\_runda$并不会做,于是把这个题扔到联考里给高二的做.郭神有$n ...
- 使用MAC OS X进行PHP开发的一些建议和技巧
原创作品,允许转载,转载时请务必以超链接形式标明转载自:线筝 本文链接地址: 使用Mac OS X进行PHP开发的一些建议和技巧 用Mac OS X作为开发机已经有一年多的时间了,在这里写下自己的一些 ...
- (转)Installing Cloudera Manager and CDH
转:https://blog.csdn.net/qq_26222859/article/details/79976506 译自官网: Installing Cloudera Manager and C ...
- CSU 1554 SG Value (multiset/priority queue 思维题)
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1554 Description The SG value of a set (mult ...
- mysql_DML_索引、视图
创建索引的语法格式:– 创建普通索引:• create index 索引名称 on 表名(列)• alter table 表名 add index 索引名称 (列)– 创建唯一索引:• create ...