日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

精确通知,顺序访问——Lock锁比synchronized锁的优势之处

發布時間:2025/4/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 精确通知,顺序访问——Lock锁比synchronized锁的优势之处 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目如下:

多線程之間按順序調用,實現A-》B-》C
三個線程啟動,要求如下:
AA 打印5次,BB 打印10次,CC 打印15次
接著
? AA 打印5次,BB 打印10次,CC 打印15次
......來10輪



package com.dym.juc;import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;class ShareResource{private int number=1; //1:A 2:B 3:Cprivate Lock lock=new ReentrantLock();private Condition condition1=lock.newCondition();private Condition condition2=lock.newCondition();private Condition condition3=lock.newCondition();public void print5(){lock.lock();try {//1. 判斷while (number!=1){condition1.await();}//2. 干活for (int i = 1; i <=5 ; i++) {System.out.println(Thread.currentThread().getName()+"\t"+i);}//3. 通知number=2;condition2.signal();} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}}public void print10(){lock.lock();try {//1. 判斷while (number!=2){condition2.await();}//2. 干活for (int i = 1; i <=10 ; i++) {System.out.println(Thread.currentThread().getName()+"\t"+i);}//3. 通知number=3;condition3.signal();} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}}public void print15(){lock.lock();try {//1. 判斷while (number!=3){condition3.await();}//2. 干活for (int i = 1; i <=15 ; i++) {System.out.println(Thread.currentThread().getName()+"\t"+i);}//3. 通知number=1;condition1.signal();} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}} }// 多線程之間按順序調用,實現A-》B-》C // 三個線程啟動,要求如下: // AA 打印5次,BB 打印10次,CC 打印15次 // 接著 // AA 打印5次,BB 打印10次,CC 打印15次 // ......來10輪 /*1 高內聚低耦合的前提下,線程操作資源類2 判斷/干活/通知3 多線程交互中,必須要防止多線程的虛假喚醒,也即(判斷只用while,不能用if)4 標志位 */public class ThreadOrderAccess {public static void main(String[] args) {ShareResource shareResource=new ShareResource();new Thread(()->{for (int i = 1; i <=10 ; i++) {shareResource.print5();}},"AA").start();new Thread(()->{for (int i = 1; i <=10 ; i++) {shareResource.print10();}},"BB").start();new Thread(()->{for (int i = 1; i <=10 ; i++) {shareResource.print15();}},"CC").start();} }

?

總結

以上是生活随笔為你收集整理的精确通知,顺序访问——Lock锁比synchronized锁的优势之处的全部內容,希望文章能夠幫你解決所遇到的問題。

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