日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java并發工具輔助類代碼實例

瀏覽:34日期:2022-09-02 17:26:53

java中的并發工具類

一:等待多線程完成的CountDownLatch

CountDownLatch允許一個或多個線程等待其他線程完成操作。

package com.fuzhulei;import java.util.concurrent.*;​/** * 減法計數器,主要是countDown(計數器1) 和 await(阻塞)方法,只有當計數器減為0的時候,當前線程才可以往下繼續執行。 * 主要用于允許一個或多個線程等待其他線程完成操作 * @author Huxudong * @createTime 2020-04-05 00:04:36 **/public class CountDownDemo { public static void main(String[] args) throws InterruptedException { /** 使用其構造函數,創建一個數值為6的計數器 */ CountDownLatch countDownLatch = new CountDownLatch(6); /** 自定義線程池使用 */ ExecutorService pool = new ThreadPoolExecutor(6, // 核心線程池大小9, // 最大線程池的大?。ǜ鶕荌O密集型,還是CPU密集型來確定大?。?L, // 超時等待時間TimeUnit.SECONDS, // 時間的單位new LinkedBlockingQueue<>(5), // 阻塞隊列是哪一種Executors.defaultThreadFactory(), // 默認線程創建工廠new ThreadPoolExecutor.AbortPolicy() // 四大拒絕策略,選擇一種 ); try{ for (int i = 0; i < 6; i++) {/** 這個線程的提交,沒有返回值的任務 */pool.execute(()->{ countDownLatch.countDown(); System.out.println(Thread.currentThread().getName()+'執行一次減法');});​ } } catch(Exception e) { e.printStackTrace(); } finally { /** 關閉線程池 */ pool.shutdown(); }​ countDownLatch.await(); System.out.println('執行完成了');​ }}

正確執行結果:

Java并發工具輔助類代碼實例

但是如果我們設置計數器的容量大于6的話(相對于我的程序而言),就會被阻塞在那里

Java并發工具輔助類代碼實例

會發現執行完成了 沒有被打印出來,而且程序一直沒有停止,這個時候就是因為計數器沒有歸0,所以當前線程被阻塞,不能向下面繼續進行。

二:同步屏障CyclicBarrier

CyclicBarrier的翻譯大致就是可循環的屏障。它主要的作用就是讓一組線程到達一個屏障(也可以叫做同步點)時被阻塞,直到最后一份線程到達屏障時,屏障才會開門,所有被屏障攔截的線程才會繼續運行。

package com.fuzhulei;​import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;​/** * CyclicBarrier是一個加法計數器,即同步屏障,可循環的屏障,讓一組線程到達一個屏障(也可以叫做同步點)時被阻塞,直到最后一個線程到達屏障,達到了一開始初始化的屏障的數值, * 屏障才可以打開門,所有被攔截的線程才可以繼續工作,主要是通過調用await方法來實現的 * @author Huxudong * @createTime 2020-04-04 22:53:50 **/public class CyclicBarrierDemo { public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(3); new Thread(()->{​ try {cyclicBarrier.await(); } catch (InterruptedException e) {e.printStackTrace(); } catch (BrokenBarrierException e) {e.printStackTrace(); } System.out.println('線程A已經到達屏障'); },'A').start();​ new Thread(()->{ try {cyclicBarrier.await(); } catch (InterruptedException e) {e.printStackTrace(); } catch (BrokenBarrierException e) {e.printStackTrace(); } System.out.println('線程B已經到達屏障'); },'B').start();​ new Thread(()->{ try {cyclicBarrier.await(); } catch (InterruptedException e) {e.printStackTrace(); } catch (BrokenBarrierException e) {e.printStackTrace(); } System.out.println('線程C已經到達屏障'); },'C').start();​​ }}

執行的結果如下:

Java并發工具輔助類代碼實例

但是如果把定義的容量大于3(相對于我的程序而言),就會發現什么都不會輸出了,看截圖

Java并發工具輔助類代碼實例

并且程序一直還沒有停止,這就是屏障起到了作用,因為屏障要求至少需要4個(假設),但是此時只有三個線程到達,所以不滿足,屏障就一直阻攔不放路,那么所有的線程也就被阻塞不能向下面繼續運行,除非知道第四個過來,滿足條件才會運行。

三:控制并發線程數的Semaphore

用來控制同時訪問特定資源的線程數量,通過協調各個線程,以保證合理的使用公用的資源。

package com.fuzhulei;​import java.util.concurrent.*;​/** * 用來控制同時訪問特定資源的線程數量,通過協調各個線程,以保證合理的使用公用的資源 * @author Huxudong * @createTime 2020-04-04 23:45:29 **/public class SemaphoreDemo { public static void main(String[] args) { Semaphore semaphore = new Semaphore(5); ExecutorService pool = new ThreadPoolExecutor(10,20,3L,TimeUnit.SECONDS,new LinkedBlockingQueue<>(20),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());​ try{ for (int i = 0; i < 60; i++) {pool.execute(() ->{ try { semaphore.acquire(); System.out.println(Thread.currentThread().getName()+'限流成功'); semaphore.release(); } catch (InterruptedException e) { e.printStackTrace(); }}); } } catch(Exception e) { e.printStackTrace(); } finally { pool.shutdown(); } }}

執行的結果如下:

Java并發工具輔助類代碼實例

例如:數據庫資源,假如需要讀取幾十萬個數據的文件,因為都是IO密集型任務,所以開了2倍的處理器+1個線程數(IO密集型,所以線程可以多一些,讓cpu忙起來,因為IO操作的時候,很少操作Cpu)

但是如果讀到內存后,還需要存儲到數據庫中,但是數據庫連接我們設置的加入就10個,所以我們必須控制只有10個線程可以同時訪問數據庫連接保存數據,否則會報錯無法連接數據庫異常。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产中文字幕一区二区三区| 久久国产精品色av免费看| 欧美国产先锋| 国产精品一站二站| 久久国产精品免费精品3p| 欧美日一区二区在线观看| 欧美一区久久| 国产麻豆精品久久| 美女性感视频久久| 老鸭窝一区二区久久精品| 欧美国产免费| 国产精品精品| 久久久久国产| 国产精品婷婷| 亚洲欧美日本国产| 婷婷综合国产| 国产一卡不卡| 精品高清久久| 99精品小视频| 爽好多水快深点欧美视频| 天堂va在线高清一区| 国产欧美自拍| 超级白嫩亚洲国产第一| 欧美天堂视频| 欧美.日韩.国产.一区.二区| 人人爽香蕉精品| 欧美日韩1区| 国产成人免费av一区二区午夜| 日韩一区二区中文| 日韩视频一区| 欧美亚洲自偷自偷| 国产精品一区二区免费福利视频| 麻豆精品在线视频| 成人羞羞在线观看网站| 成人av二区| 日精品一区二区三区| 久久天堂影院| 亚洲高清二区| 日韩一区二区三区在线看| 精品国产鲁一鲁****| 欧美午夜不卡影院在线观看完整版免费| 亚洲少妇一区| 国产欧美精品久久| 国产精品毛片久久| 免费不卡在线视频| 精品久久福利| 欧美女激情福利| 欧美视频一区| 日韩欧美另类一区二区| 亚洲人妖在线| 国产精品成久久久久| av成人国产| 国产精品欧美一区二区三区不卡| 亚洲www啪成人一区二区| 亚洲最新av| 国产伊人久久| 美女精品在线观看| 91麻豆国产自产在线观看亚洲| 亚洲资源av| 精品久久不卡| 日韩在线一二三区| 国产日韩欧美一区二区三区| 99久久久久| 久久精品99国产国产精| 久久伦理在线| 国产精品久久久久久久久久白浆 | 婷婷亚洲综合| 久久精品 人人爱| 欧美日韩国产欧| 国产不卡精品| 亚洲精品高潮| 国内亚洲精品| 九九99久久精品在免费线bt| 水蜜桃久久夜色精品一区的特点 | 精品国产欧美日韩一区二区三区| 免费日本视频一区| 精品久久久网| 欧美视频一区| 中文无码日韩欧| 亚洲成人不卡| 久久99影视| 丝袜国产日韩另类美女| 日韩电影免费网址| 国产精品久久久久久久久久白浆 | 91精品国产自产观看在线| 欧美中文一区二区| 加勒比视频一区| 欧美一区网站| 亚洲啊v在线免费视频| 亚洲午夜黄色| 欧美少妇精品| 精品资源在线| 日本一区二区三区中文字幕| 亚洲视频www| 91精品国产成人观看| 另类综合日韩欧美亚洲| 日韩国产精品久久久久久亚洲| 不卡一区综合视频| 久久久精品日韩| 国产a亚洲精品| 国产精品一区二区美女视频免费看| 亚洲天堂免费| 日韩午夜免费| 99国产精品久久久久久久| 欧美亚洲激情| 久久精品电影| 日韩一区三区| 久久免费影院| 久久久久97| 免费精品一区| 久久中文在线| 精品在线网站观看| 精品女同一区二区三区在线观看| 国产精品va视频| 91成人在线网站| 四虎在线精品| 婷婷成人av| 91成人精品观看| 欧美日韩一区二区三区在线电影| 日韩av在线免费观看不卡| 青青青国产精品| 国产精区一区二区| 欧美亚洲一级| 国产伦精品一区二区三区千人斩| 日本v片在线高清不卡在线观看| 亚洲精品一二| 91欧美极品| 麻豆一区二区三区| 日产午夜精品一线二线三线| 毛片在线网站| 国产麻豆久久| 91成人精品视频| 亚洲一区欧美激情| 综合五月婷婷| 欧美一区网站| 老鸭窝一区二区久久精品| 成人高清一区| 久久uomeier| 婷婷激情久久| 久久福利毛片| 欧美一区成人| 老司机免费视频一区二区| 成人黄色av| 91精品国产91久久久久久黑人| 91成人精品视频| 日韩中文字幕无砖| 久久97久久97精品免视看秋霞| 欧美日韩国产观看视频| 国内激情久久| 亚洲精品激情| 久久免费精品| 激情视频一区二区三区| 亚洲免费影视| 国产三级一区| 久久电影tv| 亚洲欧美视频| 91精品丝袜国产高跟在线| 国产一区二区三区探花| 亚洲不卡av不卡一区二区| 免费看的黄色欧美网站| 青草久久视频| аⅴ资源天堂资源库在线| 中文一区二区| 欧美激情亚洲| 国产综合亚洲精品一区二| 亚欧成人精品| 久久久久久久欧美精品| 999精品色在线播放| 国产亚洲毛片在线| 日本视频中文字幕一区二区三区| 精品免费视频| 亚洲尤物在线| 另类小说一区二区三区| 亚洲v在线看| 亚洲ww精品| av在线最新| 亚洲ww精品| 人在线成免费视频| 麻豆久久精品| 国产一区二区三区探花| 国产精品普通话对白| 国产福利资源一区| 91精品1区| 美女视频黄久久| 中文一区在线| 久久久亚洲欧洲日产| 九九久久婷婷| 日韩不卡在线观看日韩不卡视频 | 亚洲一二三区视频| 国产aⅴ精品一区二区四区| 国产美女亚洲精品7777| 亚洲一级二级| 欧美精品一卡| 男人的天堂亚洲一区| 国产视频一区欧美| 久久精品97| 日韩欧美另类中文字幕| 天堂中文av在线资源库| 老鸭窝毛片一区二区三区| 亚洲精品乱码|