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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JUC并发编程九 并发架构--循环打印

發布時間:2025/6/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JUC并发编程九 并发架构--循环打印 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用wait-notify方式實現循環打印

import lombok.extern.slf4j.Slf4j;@Slf4j(topic = "c.TestCycle") public class TestCycle {public static void main(String[] args) {WaitNotify waitNotify = new WaitNotify(1,5);new Thread(()->{waitNotify.print("a",1,2);}).start();new Thread(()->{waitNotify.print("b",2,3);}).start();new Thread(()->{waitNotify.print("c",3,1);}).start();}}class WaitNotify{private int flag; // 初始的狀態值,使用整數作為標記private int loopNum;public WaitNotify(int flag, int loopNum){this.flag = flag;this.loopNum = loopNum;}public void print(String str, int flag, int nextFlag){for (int i = 0; i < loopNum; i++) {synchronized (this){while(this.flag != flag){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.print(str);this.flag = nextFlag;this.notifyAll();}}} }

使用await-signal方式打印

import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock;@Slf4j(topic = "c.TestCycle") public class TestCycle {static AwaitSignal awaitSignal = new AwaitSignal(5);public static void main(String[] args) {Condition a = awaitSignal.newCondition();Condition b = awaitSignal.newCondition();Condition c = awaitSignal.newCondition();new Thread(()->{awaitSignal.print("a",a,b);}).start();new Thread(()->{awaitSignal.print("b",b,c);}).start();new Thread(()->{awaitSignal.print("c",c,a);}).start();try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}awaitSignal.lock();try{a.signal();}finally {awaitSignal.unlock();}} }class AwaitSignal extends ReentrantLock {private int loopNum;public AwaitSignal(int loopNum){this.loopNum = loopNum;}public void print(String str, Condition current, Condition nextCondition){for (int i = 0; i < loopNum; i++) {lock();try{current.await();System.out.print(str);nextCondition.signal();}catch (InterruptedException e) {e.printStackTrace();}finally {unlock();}}} }

總結

以上是生活随笔為你收集整理的JUC并发编程九 并发架构--循环打印的全部內容,希望文章能夠幫你解決所遇到的問題。

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