JUC种常用的辅助类
生活随笔
收集整理的這篇文章主要介紹了
JUC种常用的辅助类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
常用的輔助類
在JUC并發編程里面,有一個常用的輔助類;
java.util.concurrent 包下的;
1:CountDownLatch
這是一個一次性的現象 - 計數無法重置。
原理:
countDownLatch.countDown(); //數量減一1
countDownLatch.await(); //等待計數器為零 ,然后在往下執行;
2:CyclicBarrier
釋放之后重新使用。
3:Semaphore
package com.baidu.add;import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit;public class SemaphoreDemo {public static void main(String[] args) {//線程數量,停車位.限流!!Semaphore semaphore = new Semaphore(3);for (int i = 1; i <= 6; i++) {new Thread(()->{//acquire()得到try {semaphore.acquire();System.out.println(Thread.currentThread().getName()+"搶到車位");TimeUnit.SECONDS.sleep(2);System.out.println(Thread.currentThread().getName()+"離開車位");} catch (InterruptedException e) {e.printStackTrace();}finally {//release()釋放semaphore.release();}},String.valueOf(i)).start();}} }原理:
semaphore.acquire(); 獲得;假設已經滿了,等待,等待被釋放為止;
semaphore.release(); 釋放,會將當前的釋放量釋放+1;然后喚醒等待的線程。
作用
多個共享的資源互斥的使用!并發限流,控制最大的線程數!
總結
以上是生活随笔為你收集整理的JUC种常用的辅助类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中如何实现多个框,andr
- 下一篇: Pug学习笔记