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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JUC —— 常用辅助类

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JUC —— 常用辅助类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CountDownLatch

允許一個或多個線程等待直到在其他線程中執行的一組操作完成的同步輔助(減法計數器)

//計數器 public class CountDownLatchDemo {public static void main(String[] args) throws InterruptedException {//計數器總數是6,必須要執行任務的時候再使用CountDownLatch countDownLatch = new CountDownLatch(6);//模擬6個小朋友放學,全部走出班級后在關門for(int i=1;i<=6;i++){new Thread(()->{System.out.println(Thread.currentThread().getName()+" GO OUT");countDownLatch.countDown(); //-1},String.valueOf(i)).start();}countDownLatch.await(); //等待計數器歸零,然后再向下執行System.out.println("關門");} }

執行結果:

1 GO OUT 2 GO OUT 3 GO OUT 4 GO OUT 5 GO OUT 6 GO OUT 關門

CyclicBarrier

允許一組線程全部等待彼此達到共同屏障點的同步輔助,循環阻塞在涉及固定大小的線程方的程序中很有用,這些線程必須偶爾等待彼此,屏障被稱為循環,因為它可以在等待的線程被釋放之后重新使用(加法計數器)

public class CyclicBarrierTest {public static void main(String[] args) {/*** 集齊7顆龍珠召喚神龍*/CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{System.out.println("集齊7顆,召喚神龍");});for (int i = 1; i <= 7 ; i++) {int temp = i;new Thread(()->{System.out.println("收集第"+temp+"顆龍珠");try {cyclicBarrier.await(); //等待執行到對應次數的線程才執行cyclicBarrier中的} catch (Exception e) {e.printStackTrace();}}).start();}} }

執行結果:

收集第2顆龍珠 收集第1顆龍珠 收集第3顆龍珠 收集第4顆龍珠 收集第6顆龍珠 收集第5顆龍珠 收集第7顆龍珠 集齊7顆,召喚神龍

Semaphore

一個計數信號量,在概念上,信號量維持一組許可證,如果有必要,每個acquire()都會阻塞,直到許可證可用,然后才能使用它。每個release()添加許可證,潛在地釋放阻塞獲取方。但是,沒有使用實際的許可證對象,Semaphore只保留可用輸了的計數,并相應地執行(信號量)

public class SemaphoreTest {public static void main(String[] args) {//線程數量Semaphore semaphore = new Semaphore(3);//有三輛車,搶6個停車位for (int i = 1; i <=6 ; i++) {new Thread(()->{try {//acquire() 得到semaphore.acquire();System.out.println(Thread.currentThread().getName()+"搶到車位停車");TimeUnit.SECONDS.sleep(2);System.out.println(Thread.currentThread().getName()+"離開車位");//release() 釋放semaphore.release();} catch (InterruptedException e) {e.printStackTrace();}},String.valueOf(i)).start();}} }

執行結果:

3搶到車位停車 4搶到車位停車 1搶到車位停車 4離開車位 1離開車位 3離開車位 2搶到車位停車 5搶到車位停車 6搶到車位停車 5離開車位 6離開車位 2離開車位

作用:多個共享資源互斥使用。并發限流,控制最大的線程數

總結

以上是生活随笔為你收集整理的JUC —— 常用辅助类的全部內容,希望文章能夠幫你解決所遇到的問題。

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