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

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

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

瀏覽:32日期: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, // 最大線程池的大小(根據是IO密集型,還是CPU密集型來確定大小)3L, // 超時等待時間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一区| 噜噜噜躁狠狠躁狠狠精品视频| 久久av一区二区三区| 日韩一区免费| 国产成人77亚洲精品www| 国产一区二区中文| 亚洲区欧美区| 国语精品一区| 99在线精品视频在线观看| 亚洲日韩视频| 欧美1区2区3| 天堂av在线| 美女精品在线观看| 国产精品多人| 亚洲天堂久久| 日韩激情一区二区| 国产suv精品一区| 六月婷婷一区| 国产不卡一区| 亚洲影视一区二区三区| 精品视频一区二区三区在线观看| 天堂网av成人| 国产精品亚洲人成在99www| 桃色一区二区| 少妇高潮一区二区三区99| 国产成人精品一区二区三区视频 | 精品国产99| 久久高清国产| 福利一区二区免费视频| 亚洲最新av| 日韩免费一区| 欧美日韩一区自拍| 91精品福利| 久久久久亚洲精品中文字幕| 99国产精品99久久久久久粉嫩| 麻豆91小视频| 国产在线不卡| 免费一区二区三区在线视频| 尤物精品在线| 91中文字幕精品永久在线| 日本一区二区三区中文字幕| 欧美肉体xxxx裸体137大胆| 国产精品一区二区精品| 亚洲一区二区免费看| www.com.cn成人| 国产精品久久久久77777丨 | 欧洲激情综合| 麻豆中文一区二区| 在线综合视频| 国产精品久久久久久av公交车 | 国产精品草草| 天堂va欧美ⅴa亚洲va一国产| 日韩精品网站| 国产成人精品一区二区三区免费 | 亚洲一级影院| 欧美激情综合| 只有精品亚洲| 不卡中文字幕| 在线中文字幕播放| 欧美激情日韩| 欧美私人啪啪vps| 亚洲一区av| 亚洲欧美日韩国产一区二区| 久久久久91| 久久久男人天堂| 精品午夜av| 免费在线亚洲欧美| 国产伦精品一区二区三区视频| 亚洲v天堂v手机在线| 欧美成人午夜| 日韩成人综合| av在线最新| 精品视频国产| 国产精品天堂蜜av在线播放| 无码日韩精品一区二区免费| 美女网站久久| 蜜桃视频第一区免费观看| 国产视频久久| 一区在线视频观看| 成人av二区| 好吊一区二区三区| 激情五月色综合国产精品| 999国产精品永久免费视频app| 亚洲天堂av影院| 久久久久久久久成人| 国产精品男女| 国产美女精品视频免费播放软件| 97久久超碰| 国产精品久久久久久久久久白浆 | 欧美aa国产视频| 精品日韩毛片| 亚州av乱码久久精品蜜桃| 国产综合亚洲精品一区二| 999久久久国产精品| 亚洲特色特黄| 老色鬼久久亚洲一区二区| 国产视频一区在线观看一区免费| 尤物在线精品| 婷婷综合一区| 国产精品日韩精品中文字幕| 国产精品白丝久久av网站| 久久精品国产免费| 日本蜜桃在线观看视频| 1024精品一区二区三区| 国产精品日韩久久久| 亚洲狼人精品一区二区三区| 97久久亚洲| 国产成人精品免费视| 欧美羞羞视频| 国产一区二区高清| 亚洲精品乱码| 日韩精品一区二区三区中文在线| 亚洲一级大片| 91p九色成人| 国产一区精品福利| 久久香蕉国产| 日韩精品第二页| 国产一区二区三区不卡av| 亚洲天堂久久| 久久精品超碰| 色88888久久久久久影院| 国产模特精品视频久久久久| 青草久久视频| 午夜精品成人av| 免费成人av在线播放| 国产精品国码视频| 日产精品一区二区| 中文一区二区| 嫩呦国产一区二区三区av| 亚洲一本视频| 国产精品丝袜在线播放| 欧美色图一区| 国产欧美激情| 久久久久久久久99精品大| 免费欧美日韩| 九九久久国产| 免费在线观看不卡| 国产成人精品亚洲线观看| 日韩一级不卡| 精品一区二区三区在线观看视频| 自由日本语亚洲人高潮| 91精品日本| 亚洲高清久久| 鲁大师精品99久久久| 亚洲综合精品| 麻豆网站免费在线观看| 日韩精品高清不卡| 欧美亚洲国产激情| 国产精品日韩精品中文字幕| 亚洲精品在线观看91| 免费看一区二区三区| 在线亚洲成人| 日韩天堂在线| 国产精品蜜月aⅴ在线| 欧美日韩国产综合网| 日本黄色精品| 青青国产91久久久久久| 国产精品97| 国产一区二区三区成人欧美日韩在线观看| 蜜臀久久久99精品久久久久久| 日韩a一区二区| 91九色综合| 亚洲欧美日韩一区在线观看| 日韩欧美在线中字| 国产极品一区| 日韩在线视频一区二区三区| 蜜桃国内精品久久久久软件9| 国产精品亚洲欧美| 中文一区一区三区免费在线观 | 一本一道久久a久久| 欧美日韩国产探花| 91精品韩国| 国产一区二区三区网| 青青国产精品| 综合国产精品| 国产亚洲毛片在线| 免费久久精品| 日韩一区二区三区在线免费观看| 国产欧美久久一区二区三区| 视频在线观看91| 婷婷综合社区| 国产精品av久久久久久麻豆网| 超级白嫩亚洲国产第一| 国产精品香蕉| 久久国产麻豆精品| 午夜精品福利影院| 视频一区视频二区中文| 在线综合亚洲| 91久久久久| 一本色道久久精品| 国产精品97| 国产亚洲福利| 亚洲天堂av资源在线观看| 亚洲激情二区|