第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么另一個(gè)線程在同步部分尚未完成時(shí)可以訪問阻塞對象?

為什么另一個(gè)線程在同步部分尚未完成時(shí)可以訪問阻塞對象?

夢里花落0921 2023-08-09 17:26:34
消息“main Thread”在消息“new Thread”之前打印,盡管消息“new Thread”的方法位于包含 print* 方法的對象的同步部分中。    Test test = new Test();    new Thread(() -> {        try {            synchronized (test) {                Thread.sleep(5000);                test.printMessage();            }        } catch (InterruptedException e) {}    }).start();    Thread.sleep(1000);    test.printAnotherMessage();}public void printMessage() {    System.out.println("new Thread");}public void printAnotherMessage() {    System.out.println("main Thread");}}
查看完整描述

2 回答

?
斯蒂芬大帝

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

printAnotherMessage在此示例中,休眠 5 秒的同步塊之間沒有同步,這就是主線程休眠 1 秒然后main Thread無需任何等待即可打印的原因。

您可能打算創(chuàng)建printAnotherMessage一個(gè)同步方法。在這種情況下,主線程將等待,直到另一個(gè)線程完成測試對象上同步塊的執(zhí)行。


查看完整回答
反對 回復(fù) 2023-08-09
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

沒有同步,test.printAnotherMessage();因此假設(shè)時(shí)機(jī)正確,它將首先執(zhí)行。4 秒已經(jīng)很多了,應(yīng)該足夠了。


synchronized (test) {

    test.printAnotherMessage();

}

Thread.sleep不過,這很少是一個(gè)好的選擇。更合適的方法是


Test test = new Test();


new Thread(() -> {

    synchronized (test) {

        test.printMessage();

        test.notify();

    }

}).start();


synchronized (test) {

    test.wait();

    test.printAnotherMessage();

}

我在這里玩一個(gè)危險(xiǎn)的游戲,因?yàn)槲壹僭O(shè)主線程將進(jìn)入同步塊并在創(chuàng)建另一個(gè)線程并進(jìn)入其同步塊wait() 之前執(zhí)行。這是合理的,因?yàn)閯?chuàng)建線程需要一些時(shí)間。


Test test = new Test();

new Thread(() -> {

    try {

        // a lot of time to let the main thread execute wait()

        Thread.sleep(500); 


        synchronized (test) {

            test.printMessage();

            test.notify();

        }

    } catch (InterruptedException e) {}

}).start();


synchronized (test) {

    test.wait();

    test.printAnotherMessage();

}


查看完整回答
反對 回復(fù) 2023-08-09
  • 2 回答
  • 0 關(guān)注
  • 144 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號