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

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

線程安全對(duì)象數(shù)組

線程安全對(duì)象數(shù)組

富國(guó)滬深 2022-06-30 18:36:46
我在 Java 中使用二維數(shù)組。但是現(xiàn)在,我想將這個(gè)類(lèi)用于多線程。我怎樣才能做到這一點(diǎn)?我知道如何執(zhí)行線程安全功能(添加同步關(guān)鍵字)。如果同時(shí)觸發(fā) clear 和 getItem 函數(shù)會(huì)發(fā)生什么?在這種情況下,我該如何做線程安全的實(shí)例?public class ThreadSafeArray {    int ROW_MAX_COUNT = 1024;    int rowCount = 0;    int counterForRow = 0;    private Object [][] objInstances = new Object[ROW_MAX_COUNT][];    public synchronized void addItem(Object obj) {        if(counterForRow == ROW_MAX_COUNT) {            objInstances[++rowCount] = new Object[ROW_MAX_COUNT];            counterForRow = 0;        }        objInstances[rowCount][counterForRow++] = obj;    }    public synchronized  void clear() {        objInstances = new Object[ROW_MAX_COUNT][];        rowCount = 0;        counterForRow = 0;    }    public synchronized Object getItem(int index) {        int row = index / ROW_MAX_COUNT;        int column = index % ROW_MAX_COUNT;        if((row <= rowCount) && (column <= counterForRow)) {            return objInstances[row][column];        }        return null;    }}
查看完整描述

2 回答

?
SMILET

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

在您的代碼中,clear并且getItem是實(shí)例方法。將同步放在實(shí)例方法上意味著線程必須在調(diào)用該方法的對(duì)象實(shí)例上獲取鎖(“內(nèi)在鎖”),然后線程才能開(kāi)始執(zhí)行該方法中的任何代碼。

使實(shí)例方法同步有兩個(gè)效果(來(lái)自java指南):

  • 首先,同一對(duì)象上的同步方法的兩次調(diào)用不可能交錯(cuò)。當(dāng)一個(gè)線程正在為一個(gè)對(duì)象執(zhí)行同步方法時(shí),所有其他為同一對(duì)象調(diào)用同步方法的線程都會(huì)阻塞(暫停執(zhí)行),直到第一個(gè)線程處理完該對(duì)象。

  • 其次,當(dāng)同步方法退出時(shí),它會(huì)自動(dòng)與任何后續(xù)對(duì)同一對(duì)象的同步方法調(diào)用建立起之前的關(guān)系。這保證了對(duì)象狀態(tài)的更改對(duì)所有線程都是可見(jiàn)的。

因此,對(duì)于這兩種方法,您的類(lèi)已經(jīng)是線程安全的。


查看完整回答
反對(duì) 回復(fù) 2022-06-30
?
慕田峪9158850

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

如果同時(shí)觸發(fā) clear 和 getItem 函數(shù)會(huì)發(fā)生什么?

一個(gè)會(huì)等到另一個(gè)完成。

在這種情況下,我該如何做線程安全的實(shí)例?

它已經(jīng)是線程安全的。



查看完整回答
反對(duì) 回復(fù) 2022-06-30
  • 2 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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