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

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

如果它不能保證對(duì)迭代器的同步訪問(wèn),我們?yōu)槭裁匆褂猛郊希?/h1>

例如,在下面的代碼中,我們必須在進(jìn)行迭代時(shí)將列表包裝在同步塊中。Collections.synchronizedList 是否使列表同步?如果它不提供任何便利,我們?yōu)槭裁匆@樣做?謝謝!List<Integer> list = Collections.synchronizedList( new ArrayList<>(Arrays.asList(4,3,52)));synchronized(list) {       for(int data: list)         System.out.print(data+" "); }
查看完整描述

3 回答

?
莫回?zé)o

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

請(qǐng)參閱https://docs.oracle.com/javase/tutorial/collections/implementations/wrapper.html

原因是迭代是通過(guò)對(duì)集合的多次調(diào)用來(lái)完成的,集合必須組合成一個(gè)原子操作。

另請(qǐng)參閱https://www.baeldung.com/java-synchronized-collections


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

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

如果它不提供任何便利,我們?yōu)槭裁匆@樣做

迭代時(shí)它對(duì)您沒有幫助與不提供便利不同。

所有方法 - get、size、setisEmpty- 都是同步的。這意味著他們可以看到在任何線程中進(jìn)行的所有寫入。

如果沒有同步,則無(wú)法保證在一個(gè)線程中進(jìn)行的更新對(duì)任何其他線程都是可見的,因此例如,一個(gè)線程可能看到大小為 5,而另一個(gè)線程看到大小為 6。

使列表同步的機(jī)制是使其所有方法synchronized:這實(shí)際上意味著方法的主體被包裝在一個(gè)synchronized (this) { ... }塊中。

該方法仍然如此iterator():那也是synchronized。但是該synchronized塊在iterator()返回時(shí)完成,而不是在您完成迭代時(shí)完成。這是語(yǔ)言設(shè)計(jì)方式的基本限制。

所以你必須通過(guò)自己添加同步塊來(lái)幫助語(yǔ)言。


查看完整回答
反對(duì) 回復(fù) 2022-05-25
?
慕森王

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

Wrapper 用于從被包裝的集合中同步添加和刪除元素。

JavaDoc 提到迭代不同步,您需要自己同步。

 * It is imperative that the user manually synchronize on the returned
 * list when iterating over it

但是其他訪問(wèn)操作是線程安全的,并且建立發(fā)生在關(guān)系之前(因?yàn)樗鼈兪褂?code>synchronized)。


查看完整回答
反對(duì) 回復(fù) 2022-05-25
  • 3 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報(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)