最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談java多線程wait,notify

 更新時(shí)間:2019年05月29日 10:15:10   作者:lijingyulee  
這篇文章主要介紹了java多線程wait,notify,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面小編和大家一起來(lái)學(xué)習(xí)一下吧

前言

1.因?yàn)樯婕暗綄?duì)象鎖,Wait、Notify一定要在synchronized里面進(jìn)行使用。
2.Wait必須暫定當(dāng)前正在執(zhí)行的線程,并釋放資源鎖,讓其他線程可以有機(jī)會(huì)運(yùn)行
3.notify/notifyall: 喚醒線程

共享變量

public class ShareEntity {
private String name;
// 線程通訊標(biāo)識(shí)
private Boolean flag = false;
public ShareEntity() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Boolean getFlag() {
return flag;
}
public void setFlag(Boolean flag) {
this.flag = flag;
}
}

線程1(生產(chǎn)者)

public class CommunicationThread1 extends Thread{
private ShareEntity shareEntity;
public CommunicationThread1(ShareEntity shareEntity) {
this.shareEntity = shareEntity;
}
@Override
public void run() {
int num = 0;
while (true) {
synchronized (shareEntity) {
if (shareEntity.getFlag()) {
try {
shareEntity.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (num % 2 == 0)
shareEntity.setName("thread1-set-name-0");
else
shareEntity.setName("thread1-set-name-1");
num++;
shareEntity.setFlag(true);
shareEntity.notify();
}
}
}
}

線程2(消費(fèi)者)

public class CommunicationThread2 extends Thread{
private ShareEntity shareEntity;
public CommunicationThread2(ShareEntity shareEntity) {
this.shareEntity = shareEntity;
}
@Override
public void run() {
while (true) {
synchronized (shareEntity) {
if (!shareEntity.getFlag()) {
try {
shareEntity.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(shareEntity.getName());
shareEntity.setFlag(false);
shareEntity.notify();
}
}
}
}

請(qǐng)求

@RequestMapping("test-communication")
public void testCommunication() {
ShareEntity shareEntity = new ShareEntity();
CommunicationThread1 thread1 = new CommunicationThread1(shareEntity);
CommunicationThread2 thread2 = new CommunicationThread2(shareEntity);
thread1.start();
thread2.start();
}

結(jié)果

thread1-set-name-0
thread1-set-name-1
thread1-set-name-0
thread1-set-name-1
thread1-set-name-0
thread1-set-name-1
thread1-set-name-0

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

相關(guān)文章

  • java實(shí)現(xiàn)高效下載文件的方法

    java實(shí)現(xiàn)高效下載文件的方法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)高效下載文件的幾種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 淺析JVM垃圾回收的過(guò)程

    淺析JVM垃圾回收的過(guò)程

    這篇文章主要介紹了JVM垃圾回收的過(guò)程,幫助大家更好的理解和學(xué)習(xí)Java中的垃圾回收機(jī)制,感興趣的朋友可以了解下
    2020-09-09
  • 基于Java注解(Annotation)的自定義注解入門介紹

    基于Java注解(Annotation)的自定義注解入門介紹

    要深入學(xué)習(xí)注解,我們就必須能定義自己的注解,并使用注解,在定義自己的注解之前,我們就必須要了解Java為我們提供的元注解和相關(guān)定義注解的語(yǔ)法
    2013-04-04
  • Java反射概念與使用實(shí)例代碼

    Java反射概念與使用實(shí)例代碼

    JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法,下面這篇文章主要給大家介紹了關(guān)于Java反射概念與使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Java二分查找算法與數(shù)組處理的應(yīng)用實(shí)例

    Java二分查找算法與數(shù)組處理的應(yīng)用實(shí)例

    二分查找法,又叫做折半查找法,它是一種效率較高的查找方法。數(shù)組對(duì)于每一門編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java 語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類型元素
    2022-07-07
  • java騰訊AI人臉對(duì)比對(duì)接代碼實(shí)例

    java騰訊AI人臉對(duì)比對(duì)接代碼實(shí)例

    這篇文章主要介紹了java騰訊AI人臉對(duì)比對(duì)接,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java學(xué)習(xí)筆記之觀察者模式

    Java學(xué)習(xí)筆記之觀察者模式

    這篇文章主要為大家詳細(xì)介紹了Java學(xué)習(xí)筆記之觀察者模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SpringBoot+SpringCloud用戶信息微服務(wù)傳遞實(shí)現(xiàn)解析

    SpringBoot+SpringCloud用戶信息微服務(wù)傳遞實(shí)現(xiàn)解析

    這篇文章主要介紹了SpringBoot+SpringCloud實(shí)現(xiàn)登錄用戶信息在微服務(wù)之間的傳遞,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 新手初學(xué)Java的內(nèi)部類

    新手初學(xué)Java的內(nèi)部類

    這篇文章主要介紹了java內(nèi)部類原理與用法,結(jié)合實(shí)例形式分析了Java內(nèi)部類的概念、原理、分類及相關(guān)使用技巧,需要的朋友可以參考下,希望能給你帶來(lái)幫助
    2021-07-07
  • Java中Arrays.sort()方法的比較器詳解

    Java中Arrays.sort()方法的比較器詳解

    這篇文章主要介紹了Java中Arrays.sort()方法的比較器詳解,Arrays.sort(Object[] a)此方法看似沒(méi)有要求我們實(shí)現(xiàn)比較器,對(duì)于基本數(shù)據(jù)類型,String類型確實(shí)如此,因?yàn)檫@些類型中已經(jīng)自帶了compareTo()方法,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

米易县| 桂阳县| 句容市| 长武县| 舟曲县| 华阴市| 四平市| 新竹市| 水城县| 云安县| 驻马店市| 西平县| 张家港市| 饶阳县| 绿春县| 安仁县| 尚志市| 深州市| 田阳县| 怀来县| 华蓥市| 连云港市| 卫辉市| 迁安市| 商城县| 木里| 安远县| 金塔县| 蛟河市| 昌宁县| 天镇县| 东明县| 凤庆县| 遵义县| 禹州市| 华坪县| 汝南县| 利津县| 惠州市| 大方县| 永宁县|