java线程系列---condition例子
来源:互联网 发布:sqlserver培训学校 编辑:程序博客网 时间:2024/05/07 07:04
例如:有三个线程 ,当1执行完后,指定2执行,2执行完后指定3执行,3执行完后指定1执行
public class ThreeConditionCommunication {
public static void main(String[] args) {
final Business business = new Business();
new Thread(
new Runnable() {
@Override
public void run() {
for(int i=1;i<=50;i++){
business.sub2(i);
}
}
}
).start();
new Thread(
new Runnable() {
@Override
public void run() {
for(int i=1;i<=50;i++){
business.sub3(i);
}
}
}
).start();
for(int i=1;i<=50;i++){
business.main(i);
}
}
static class Business {
Lock lock = new ReentrantLock();
Condition condition1 = lock.newCondition();
Condition condition2 = lock.newCondition();
Condition condition3 = lock.newCondition();
private int shouldSub = 1;
public void sub2(int i){
lock.lock();
try{
while(shouldSub != 2){
try {
condition2.await();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=1;j<=10;j++){
System.out.println("sub2 thread sequence of " + j + ",loop of " + i);
}
shouldSub = 3;
condition3.signal();
}finally{
lock.unlock();
}
}
public void sub3(int i){
lock.lock();
try{
while(shouldSub != 3){
try {
condition3.await();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=1;j<=20;j++){
System.out.println("sub3 thread sequence of " + j + ",loop of " + i);
}
shouldSub = 1;
condition1.signal();
}finally{
lock.unlock();
}
}
public void main(int i){
lock.lock();
try{
while(shouldSub != 1){
try {
condition1.await();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=1;j<=100;j++){
System.out.println("main thread sequence of " + j + ",loop of " + i);
}
shouldSub = 2;
condition2.signal();
}finally{
lock.unlock();
}
}
}
}
- java线程系列---condition例子
- java线程系列---condition的讲解
- java线程之Condition、ReentrantLock
- JAVA线程间协作:Condition
- java线程学习之Condition
- Java多线程系列--Condition条件
- Java线程之Condition高效线程通信
- 线程condition
- java 之 Condition 线程间通信
- 【Java线程】锁机制:synchronized、Lock、Condition
- Java中的线程(十)- condition lock
- JAVA多线程---Condition使用---线程通信
- 【Java线程】锁机制:synchronized、Lock、Condition
- 【Java线程】锁机制:synchronized、Lock、Condition
- 【Java线程】锁机制:synchronized、Lock、Condition
- 【Java线程】锁机制:synchronized、Lock、Condition
- 【Java线程】锁机制:synchronized、Lock、Condition
- 【Java线程】锁机制:synchronized、Lock、Condition
- XML(7) URI
- tomcat7.0安装 solr3.6
- 通过SQL Server 访问Oracle
- 跟JBPM学设计模式之适配器模式
- FatFs在windows平台上的移植并测试(VC6)
- java线程系列---condition例子
- Android开发:ImageView阴影和图层效果
- Android图片重叠效果
- Gallery重叠效果
- Android中图片与屏幕密度
- 给图片加一个标记,点菜时,表示这个菜没货了。
- Java/ Android 历史(整理)
- symFindByName找不到函数名失败的解决办法
- 禅的意义