摘要:第一個(gè)線程,從開始如果另一個(gè)線程等待,則喚醒對(duì)方之后,自己等待如果另一個(gè)線程等待,則喚醒對(duì)方之后,自己等待使用條件鎖最重要的是,自己等待之前,一定要喚醒其他線程,并且記住要釋放鎖。
public class testThread { public static void main(String[] args) { ReentrantLock lock=new ReentrantLock(); Condition one =lock.newCondition(); Condition two=lock.newCondition(); //第一個(gè)線程,從1開始 new Thread(new Runnable() { @Override public void run() { int i = 1; while (i<=20){ lock.lock(); System.out.print(" thread--1----:"+i); try { //如果另一個(gè)線程等待,則喚醒對(duì)方之后,自己等待 two.signalAll(); one.await(); i=i+2; } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } } }).start(); new Thread(new Runnable() { @Override public void run() { int i = 2; while (i<=20){ lock.lock(); System.out.print(" thread--2----:"+i); try { //如果另一個(gè)線程等待,則喚醒對(duì)方之后,自己等待 one.signalAll(); two.await(); i=i+2; } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } } }).start(); } }
使用條件鎖最重要的是,自己等待之前,一定要喚醒其他線程,并且記住finally要釋放鎖。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70952.html
摘要:通知任一一個(gè)進(jìn)入等待狀態(tài)的線程,通知所有讓調(diào)用線程阻塞在這個(gè)方法上,直到的線程完全執(zhí)行完畢,調(diào)用線程才會(huì)繼續(xù)執(zhí)行。通知調(diào)度器,主動(dòng)讓出對(duì)的占用。 多線程在開發(fā)知識(shí)中是一個(gè)很重要的部分,然而實(shí)際生產(chǎn)中卻很少遇到真正需要自己去處理多線程編程里的那些復(fù)雜細(xì)節(jié)和問題,因?yàn)楹芏鄷r(shí)候,都有一套架構(gòu)或者一些框架幫大部分業(yè)務(wù)程序員隱藏了多線程的細(xì)節(jié),大多時(shí)候只需要簡(jiǎn)單的實(shí)現(xiàn)各種業(yè)務(wù)邏輯即可。 今天來理...
摘要:第二章線程安全性線程安全性的理解定義某個(gè)類的行為與其規(guī)范完全一致原子性競(jìng)態(tài)條件理解當(dāng)操作的正確的結(jié)果取決于多個(gè)線程的交替執(zhí)行時(shí)序,就會(huì)發(fā)生競(jìng)態(tài)條件。 第二章 線程安全性 2.1 線程安全性的理解 定義:某個(gè)類的行為與其規(guī)范完全一致 2.2 原子性 2.2.1 競(jìng)態(tài)條件 理解:當(dāng)操作的正確的結(jié)果取決于多個(gè)線程的交替執(zhí)行時(shí)序,就會(huì)發(fā)生競(jìng)態(tài)條件。常見的競(jìng)態(tài)條件類型是先檢查后執(zhí)行,首先觀察到某...
摘要:不可變?nèi)缃^對(duì)線程安全就是滿足并發(fā)編程實(shí)戰(zhàn)中對(duì)線程安全的定義在中標(biāo)注自己是線程安全的類,大都不是絕對(duì)的線程安全。如的和二實(shí)現(xiàn)線程安全的方法互斥同步互斥是因同步是果互斥是方法同步是目的。 一.到底什么叫線程安全:java并發(fā)編程實(shí)戰(zhàn)中對(duì)線程安全的定義是:當(dāng)多個(gè)線程訪問一個(gè)對(duì)象時(shí),如果不用考慮這些線程在運(yùn)行時(shí)環(huán)境下的調(diào)度和交替執(zhí)行,也不需要進(jìn)行額外的同步,或者在調(diào)用方進(jìn)行任何其他的協(xié)調(diào)操作,...
摘要:大多數(shù)都是線程安全的,所以極大降低了在實(shí)現(xiàn)線程安全性的復(fù)雜性。只有在處理請(qǐng)求需要保存一些信息的情況下,線程安全性才會(huì)成為一個(gè)問題。雖然這種方式可以保證線程安全,但是性能方面會(huì)有些問題。 本文是作者在閱讀JCIP過程中的部分筆記和思考,純手敲,如有誤處,請(qǐng)指正,非常感謝~ 可能會(huì)有人對(duì)書中代碼示例中的注解有疑問,這里說一下,JCIP中示例代碼的注解都是自定義的,并非官方JDK的注解,因此...
摘要:文章結(jié)構(gòu)來自七周七并發(fā)模型互斥和內(nèi)存模型創(chuàng)建線程這段代碼創(chuàng)建并啟動(dòng)了一個(gè)實(shí)例,首先從開始,函數(shù)的余下部分一起并發(fā)執(zhí)行。在鎖定狀態(tài)下,某些線程擁有鎖在非鎖定狀態(tài)下,沒有線程擁有它。 并發(fā)&并行 并發(fā)程序含有多個(gè)邏輯上的獨(dú)立執(zhí)行塊,他們可以獨(dú)立的并行執(zhí)行,也可以串行執(zhí)行。并行程序解決問題的速度比串行程序快的多,因?yàn)槠淇梢酝瑫r(shí)執(zhí)行整個(gè)任務(wù)的多個(gè)部分。并行程序可能有多個(gè)獨(dú)立執(zhí)行塊,也可能只有一...
閱讀 768·2021-09-26 09:55
閱讀 2058·2021-09-22 15:44
閱讀 1473·2019-08-30 15:54
閱讀 1324·2019-08-30 15:54
閱讀 2668·2019-08-29 16:57
閱讀 517·2019-08-29 16:26
閱讀 2490·2019-08-29 15:38
閱讀 2122·2019-08-26 11:48