色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java Lock鎖多線程中實(shí)現(xiàn)流水線任務(wù)

瀏覽:59日期:2022-09-02 09:58:12

下面程序代碼通過使用Lock鎖執(zhí)行簡(jiǎn)單的流水線任務(wù):

import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @author lzq * @data 2020/4/29 0029 - 下午 9:48 */public class TestLock { public static void main(String[] args) { DataSource dataSource=new DataSource(); new Thread(() -> { for (int i=0;i<10;i++){dataSource.a(); } },'A').start(); new Thread(() -> { for (int i=0;i<10;i++){dataSource.b(); } },'B').start(); new Thread(() -> { for (int i=0;i<10;i++){dataSource.c(); } },'C').start(); }}class DataSource{ private int x=1; private Lock lock=new ReentrantLock(); private Condition condition1=lock.newCondition(); private Condition condition2=lock.newCondition(); private Condition condition3=lock.newCondition(); public void a(){ lock.lock(); try { while(x!=1){condition1.await(); } System.out.println(Thread.currentThread().getName()+':aaa'); x=2; condition2.signal(); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } public void b(){ lock.lock(); try { while(x!=2){condition2.await(); } System.out.println(Thread.currentThread().getName()+':bbb'); x=3; condition3.signal(); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } public void c(){ lock.lock(); try { while(x!=3){condition3.await(); } System.out.println(Thread.currentThread().getName()+':ccc'); x=1; condition1.signal(); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } }}

執(zhí)行結(jié)果如下:

Java Lock鎖多線程中實(shí)現(xiàn)流水線任務(wù)

對(duì)于上面代碼簡(jiǎn)單分析:代碼中包含簡(jiǎn)單的生產(chǎn)者消費(fèi)者流程和Lock實(shí)現(xiàn)三部曲,即重復(fù)判斷條件,執(zhí)行邏輯,喚醒其他線程和產(chǎn)生鎖,加鎖,解鎖。注意這里一點(diǎn),條件判斷一定要重復(fù)判斷,不然可能會(huì)導(dǎo)致線程假醒影響結(jié)果。

因?yàn)楫?dāng)線程處于等待狀態(tài)時(shí),線程會(huì)釋放資源,等到被喚醒的時(shí)候,從上次await的地方醒來繼續(xù)執(zhí)行,這時(shí)條件判斷成立,執(zhí)行await,其他線程再修改條件使得本線程被喚醒,此時(shí)本線程不會(huì)繼續(xù)判斷,而是繼續(xù)執(zhí)行,如果使用循環(huán)判斷就能檢驗(yàn)出條件被修改。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 久99频这里只精品23热 视频 | 国产激情一级毛片久久久 | 欧美真人毛片动作视频 | 国产一区二区三区在线视频 | 欧美一级毛片激情 | 欧美一级看片a免费观看 | 99精品在线视频观看 | 欧美一二三区在线 | 日本波多野结衣视频 | 免费a网址 | 在线观看欧洲成人免费视频 | 亚洲国产欧美在线成人aaaa | 日本天堂网在线 | 波多野结衣视频免费在线观看 | 国产成人精品一区二三区在线观看 | 免费人成黄页网站在线观看 | 免费人成综合在线视频 | 亚洲成年人免费网站 | 老头做爰xxxx视频 | 女人把腿劈开让男人桶的网站 | 超矿碰人人超人人看 | 国产三级中文字幕 | 蜜桃日本一道无卡不码高清 | 仑乱高清在线一级播放 | 国产原创一区二区 | 国产私拍福利精品视频推出 | 久久久久久综合七次郎 | 色视频网站大全免费 | 女人张开腿给人桶免费视频 | 精品国产区一区二区三区在线观看 | 一级特级aaa毛片 | 久久久一区二区三区不卡 | 9久9久热精品视频在线观看 | 正能量www正能量免费网站 | 亚洲成年男人的天堂网 | 在线观看偷拍视频一区 | 欧美一级特黄aa大片视频 | 九九九在线视频 | 欧美一级淫片a免费播放口aaa | 欧美日韩视频一区二区在线观看 | 欧美中文字幕在线视频 |