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

java使用wait()和notify()線程間通訊的實(shí)現(xiàn)

 更新時(shí)間:2023年09月01日 15:54:25   作者:L-960  
Java 線程通信是將多個(gè)獨(dú)立的線程個(gè)體進(jìn)行關(guān)聯(lián)處理,使得線程與線程之間能進(jìn)行相互通信,本文就介紹了java使用wait()和notify()線程間通訊的實(shí)現(xiàn),感興趣的可以了解一下

線程.wait()

當(dāng)一個(gè)線程調(diào)用 線程.wait()時(shí),它會(huì)釋放對(duì)象的鎖,讓其他線程可以獲得這個(gè)鎖并執(zhí)行相應(yīng)的同步代碼塊,同時(shí),如果未配置超時(shí)時(shí)間,該線程會(huì)無(wú)限期等待,直到接收到線程.notify()信號(hào),注意,一般情況下要在同步代碼塊中執(zhí)行。

線程.notify()

當(dāng)一個(gè)線程調(diào)用 線程.notify()時(shí),它會(huì)給線程發(fā)送一個(gè)信號(hào),讓其在線程.notify()卡住的地方繼續(xù)執(zhí)行,注意,一般情況下要在同步代碼塊中執(zhí)行。

示例

下面是一個(gè)演示線程間通訊的示例,在一個(gè)定時(shí)任務(wù)中達(dá)成某個(gè)條件時(shí),通知主線程繼續(xù)執(zhí)行,同時(shí)關(guān)閉該定時(shí)任務(wù):

    public static void main(String[] args) throws InterruptedException {
        final Thread main = Thread.currentThread();
        main.setName("main thread");
        // 創(chuàng)建一個(gè)默認(rèn)定時(shí)任務(wù)
        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(
                5,  // 核心線程數(shù)
                new ThreadPoolExecutor.CallerRunsPolicy()  // 隊(duì)列滿后的拒絕策略
        );
        AtomicInteger flag = new AtomicInteger(0);
        // 執(zhí)行定時(shí)任務(wù)
        final ScheduledFuture<?> queryTask = executor.scheduleAtFixedRate(() -> {
            // 在這里執(zhí)行您的定時(shí)任務(wù)邏輯
            final int i = flag.addAndGet(1);
            log.info("定時(shí)任務(wù)執(zhí)行了1!flag={}", i);
            if (i == 5) {
                synchronized (main) {
                    System.out.println("通知主線程取消該任務(wù)");
                    main.notify();
                }
            }
        }, 0, 3, TimeUnit.SECONDS);
        final ScheduledFuture<?> printTask = executor.scheduleAtFixedRate(() -> {
            // 在這里執(zhí)行您的定時(shí)任務(wù)邏輯
            log.info("定時(shí)任務(wù)執(zhí)行了2!");
        }, 0, 3, TimeUnit.SECONDS);
        log.info("main wait");
        synchronized (main) {
            /**
             *
             主線程在執(zhí)行 main.wait() 進(jìn)入等待狀態(tài)后,確實(shí)會(huì)釋放 main 對(duì)象的鎖,而不是一直占用鎖。
             這是 Java 中 wait() 方法的特性之一。
             當(dāng)一個(gè)線程調(diào)用 wait() 方法時(shí),它會(huì)釋放對(duì)象的鎖,讓其他線程可以獲得這個(gè)鎖并執(zhí)行相應(yīng)的同步代碼塊。
             */
            main.wait();
        }
        log.info("main 活了");
        // 取消定時(shí)任務(wù)
        queryTask.cancel(true);
        log.info("scheduledFuture被取消");
    }

運(yùn)行結(jié)果:

11:14:50.838 [main thread] INFO MyTaskConfig - main wait
11:14:50.838 [pool-1-thread-2] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了2!
11:14:50.838 [pool-1-thread-1] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了1!flag=1
11:14:53.845 [pool-1-thread-1] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了2!
11:14:53.845 [pool-1-thread-2] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了1!flag=2
11:14:56.841 [pool-1-thread-2] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了1!flag=3
11:14:56.842 [pool-1-thread-3] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了2!
11:14:59.841 [pool-1-thread-4] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了1!flag=4
11:14:59.841 [pool-1-thread-1] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了2!
11:15:02.848 [pool-1-thread-2] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了2!
11:15:02.848 [pool-1-thread-4] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了1!flag=5
通知主線程取消該任務(wù)
11:15:02.848 [main thread] INFO MyTaskConfig - main 活了
11:15:02.848 [main thread] INFO MyTaskConfig - scheduledFuture被取消
11:15:05.835 [pool-1-thread-2] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了2!
11:15:08.843 [pool-1-thread-2] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了2!
11:15:11.836 [pool-1-thread-2] INFO MyTaskConfig - 定時(shí)任務(wù)執(zhí)行了2!

到此這篇關(guān)于java使用wait()和notify()線程間通訊的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)java wait()和notify()線程間通訊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)可配置換膚的方法示例

    Java實(shí)現(xiàn)可配置換膚的方法示例

    本文主要介紹了Java實(shí)現(xiàn)可配置換膚的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 又又叕出BUG啦!理智分析Java NIO的ByteBuffer到底有多難用

    又又叕出BUG啦!理智分析Java NIO的ByteBuffer到底有多難用

    網(wǎng)絡(luò)數(shù)據(jù)的基本單位永遠(yuǎn)是byte,Java NIO提供ByteBuffer作為字節(jié)的容器,但該類過(guò)于復(fù)雜,有點(diǎn)難用.本篇文章就帶大家簡(jiǎn)單了解一下 ,需要的朋友可以參考下
    2021-06-06
  • java.lang.UnsupportedClassVersionError錯(cuò)誤的解決辦法(附圖文)

    java.lang.UnsupportedClassVersionError錯(cuò)誤的解決辦法(附圖文)

    這篇文章主要給大家介紹了關(guān)于java.lang.UnsupportedClassVersionError錯(cuò)誤的解決辦法,"java.lang.UnsupportedClassVersionError"意味著您正在運(yùn)行的Java版本與編譯該類時(shí)使用的Java版本不兼容,需要的朋友可以參考下
    2023-10-10
  • SpringBoot項(xiàng)目中Maven剔除無(wú)用Jar引用的最佳實(shí)踐

    SpringBoot項(xiàng)目中Maven剔除無(wú)用Jar引用的最佳實(shí)踐

    在?Spring?Boot?項(xiàng)目開發(fā)中,Maven?是最常用的構(gòu)建工具之一,通過(guò)?Maven,我們可以輕松地管理項(xiàng)目所需的依賴,而,隨著項(xiàng)目的復(fù)雜化,無(wú)用的?Jar?包引用可能會(huì)逐漸增多,本文旨在詳細(xì)解析如何在?Spring?Boot?項(xiàng)目中剔除無(wú)用的?Jar?引用,需要的朋友可以參考下
    2025-01-01
  • Spring Boot使用Log4j2的實(shí)例代碼

    Spring Boot使用Log4j2的實(shí)例代碼

    這篇文章主要介紹了Spring Boot使用Log4j2的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Java實(shí)現(xiàn)微信紅包分配規(guī)則

    Java實(shí)現(xiàn)微信紅包分配規(guī)則

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)仿微信紅包分配規(guī)則,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • SpringBoot使用編程方式配置DataSource的方法

    SpringBoot使用編程方式配置DataSource的方法

    這篇文章主要介紹了SpringBoot使用編程方式配置DataSource的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • MySQL性能優(yōu)化之配置參數(shù)過(guò)程

    MySQL性能優(yōu)化之配置參數(shù)過(guò)程

    優(yōu)化MySQL配置:調(diào)整連接數(shù)、超時(shí)時(shí)間及緩沖區(qū)大小,提升性能,建議修改back_log為128-512,interactive_timeout為7200,合理設(shè)置InnoDB參數(shù)及緩存策略
    2025-09-09
  • java多線程編程學(xué)習(xí)(線程間通信)

    java多線程編程學(xué)習(xí)(線程間通信)

    下面小編就為大家?guī)?lái)一篇java多線程編程學(xué)習(xí)(線程間通信)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • java實(shí)現(xiàn)圖形化界面計(jì)算器

    java實(shí)現(xiàn)圖形化界面計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖形化界面計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評(píng)論

拉萨市| 观塘区| 郧西县| 新巴尔虎左旗| 达拉特旗| 崇州市| 许昌市| 漠河县| 桐庐县| 上犹县| 彭泽县| 茶陵县| 仁布县| 沙田区| 潜江市| 宝丰县| 清丰县| 吐鲁番市| 汽车| 温宿县| 留坝县| 建水县| 贺州市| 宜阳县| 榆社县| 太保市| 县级市| 镇原县| 抚州市| 凯里市| 任丘市| 哈尔滨市| 桑植县| 鸡西市| 寻乌县| 从江县| 辽中县| 定南县| 金寨县| 福泉市| 葵青区|