日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

锁绑定多个条件Condition

發布時間:2025/4/16 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 锁绑定多个条件Condition 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*
* 題目:多線程之間按順序調用,實現A->B->C三個線程啟動,要求如下:
* A打印5次,B打印10次,C打印15次
* 緊接著
* A打印5次,B打印10次,C打印15次
* 。。。。。
* 打印10輪
* */

SyncAndReentrantLockDemo.java

import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;class ShareResource{private int number = 1;//A:1.B:2,C:3private Lock lock = new ReentrantLock();private Condition c1 = lock.newCondition();private Condition c2 = lock.newCondition();private Condition c3 = lock.newCondition();public void print5(){lock.lock();try{//1判斷while(number != 1){c1.await();}//2干活for(int i=1;i<=5;i++){System.out.println(Thread.currentThread().getName()+"\t"+i);}//3通知number = 2;c2.signal();}catch (Exception e){e.printStackTrace();}finally {lock.unlock();}}public void print10(){lock.lock();try{//1判斷while(number != 2){c2.await();}//2干活for(int i=1;i<=10;i++){System.out.println(Thread.currentThread().getName()+"\t"+i);}//3通知number = 3;c3.signal();}catch (Exception e){e.printStackTrace();}finally {lock.unlock();}}public void print15(){lock.lock();try{//1判斷while(number != 3){c3.await();}//2干活for(int i=1;i<=15;i++){System.out.println(Thread.currentThread().getName()+"\t"+i);}//3通知number = 1;c1.signal();}catch (Exception e){e.printStackTrace();}finally {lock.unlock();}}}public class SyncAndReentrantLockDemo {public static void main(String[] args){ShareResource shareResource = new ShareResource();new Thread(()->{for(int i=1;i<=10;i++){shareResource.print5();}},"A").start();new Thread(()->{for(int i=1;i<=10;i++){shareResource.print10();}},"B").start();new Thread(()->{for(int i=1;i<=10;i++){shareResource.print15();}},"C").start();} }

總結

以上是生活随笔為你收集整理的锁绑定多个条件Condition的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。