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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

鎖在 Java 中是如何工作的?

鎖在 Java 中是如何工作的?

溫溫醬 2021-07-11 16:12:51
假設(shè)我有 2 個 a 實例CustomThread和一個名為printer. 在 的print方法內(nèi)部printer,如果我在最后執(zhí)行 alock.lock()和lock.unlock(),這是如何工作的?private class Printer{        private final Lock mutex = new ReentrantLock(true);        public void print(int thread){            try {                mutex.lock();                for(int i = 0; i < 10; ++i) {                    System.out.println(String.format("Printing: %d for Thread: %d", i, thread));                }            } catch(Exception e){            } finally {                mutex.unlock();            }        }    }我將從我的 2 個線程對象中調(diào)用此方法。我的問題是,方法lock本身如何?鎖不是基于線程的嗎?也許我在這里混淆了核心思想。當我在方法中加鎖時,這意味著什么?
查看完整描述

1 回答

?
翻翻過去那場雪

TA貢獻2065條經(jīng)驗 獲得超14個贊

你可以把它想象成一個鎖有一個叫做 的字段owner,它是一個Thread.

lock()被調(diào)用,并且ownernullowner被分配到調(diào)用線程。當unlock()被調(diào)用時,owner被重置為null。

lock()被調(diào)用并且owner不是null(并且不是當前線程,因為鎖是可重入的)時,調(diào)用線程會阻塞,直到另一個線程放棄所有權(quán)并且可以將其分配為新的所有者。

額外的復(fù)雜性是檢查當前所有權(quán)以及將當前線程有條件地分配為新所有者,這兩者都必須被其他線程原子地看到。這保留了鎖的完整性。


查看完整回答
反對 回復(fù) 2021-07-29
  • 1 回答
  • 0 關(guān)注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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