日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

关于list遍历时sychronizedList方法和synchronized同步块的线程安全问题思考

發(fā)布時(shí)間:2025/3/11 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于list遍历时sychronizedList方法和synchronized同步块的线程安全问题思考 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

    • 我的難點(diǎn)
      • sychronizedList方法無(wú)法解決List遍歷時(shí)線程不安全問(wèn)題
      • sychronizd同步塊為什么可以解決List遍歷時(shí)線程不安全問(wèn)題
    • 我的思考過(guò)程

我的難點(diǎn)

sychronizedList方法無(wú)法解決List遍歷時(shí)線程不安全問(wèn)題

關(guān)于慕課網(wǎng)的socket課程學(xué)習(xí)中,qiujuer老師在課程中講到:
關(guān)于多線程操作時(shí),利用sychronizedList方法解決List內(nèi)部方法線程不安全問(wèn)題,但是對(duì)于list遍歷仍然會(huì)觸發(fā)異常。難點(diǎn)*1為什么會(huì)觸發(fā)異常呢?

sychronizd同步塊為什么可以解決List遍歷時(shí)線程不安全問(wèn)題

接著老師又講到其他解決方案,
在stop()方法內(nèi)部添加synchronized同步塊。stop()方法中用到了List的遍歷操作。
然后在boradcast(String str)方法名上添加sychronized修飾。方法內(nèi)部用到了List的遍歷操作。難點(diǎn)*2為什么同步塊可以解決List遍歷時(shí)線程不安全問(wèn)題呢?

我的思考過(guò)程

難點(diǎn)*1:為什么會(huì)觸發(fā)異常呢?
【思路】先看看sychronizedList(List list)是一個(gè)什么方法。
點(diǎn)開(kāi)源碼看看:這個(gè)方法支持特定的List返回一個(gè)線程安全的List。
【源碼結(jié)論】:對(duì)于synchronizedList方法返回的List ,對(duì)該返回的List進(jìn)行遍歷時(shí),必須放在同步塊內(nèi)部。否則可能導(dǎo)致非確定性(non-deterministic)問(wèn)題。

待考證*1為什么線程安全的一個(gè)List,在進(jìn)行遍歷操作時(shí)會(huì)觸發(fā)線程不安全?

【我的思考】:
非確定性(non-deterministic)問(wèn)題指什么問(wèn)題?它和線程不安全有什么關(guān)系呢?什么是線程不安全呢?
【我的理解】:

  • 非確定性問(wèn)題指無(wú)法直接計(jì)算,只能間接“猜算”結(jié)果的一類(lèi)問(wèn)題。
  • 非確定性問(wèn)題中可能會(huì)有線程不安全的問(wèn)題出現(xiàn)。
  • 線程不安全指:在多線程情況下,數(shù)據(jù)被先后更改多次導(dǎo)致臟數(shù)據(jù)。
  • 【我的思考】:
    源碼講到synchronizedList方法返回的List進(jìn)行遍歷操作時(shí)會(huì)有非確定問(wèn)題,沒(méi)有講到線程不安全的問(wèn)題。
    【進(jìn)一步思考】:
    但是,源碼建議這部分遍歷要放到同步塊中,說(shuō)明synchronized同步塊可以解決這部分的非確定問(wèn)題,這部分問(wèn)題主要是指線程不安全問(wèn)題嗎?同步塊可以解決線程不安全問(wèn)題嗎?
    【我的理解】:

  • 這里的非確定問(wèn)題主要指的是synchronizedList方法返回的List在遍歷時(shí)導(dǎo)致線程不安全問(wèn)題,因?yàn)楸仨毷褂猛綁K來(lái)解決這部分問(wèn)題。
  • 推測(cè)此處同步塊可以解決線程不安全問(wèn)題。
  • 【我的思考】:
    synchronizedList方法返回的List就是一個(gè)線程安全的list,所以遍歷這個(gè)list會(huì)破壞了這個(gè)返回的list的的線程安全嗎?
    【我的理解】:

  • 源碼講到返回的list在遍歷時(shí)會(huì)出現(xiàn)非確定性問(wèn)題,必須加上同步塊。所以要看看使用同步塊解決了什么問(wèn)題。
  • 難點(diǎn)*2為什么同步塊可以解決List遍歷時(shí)線程不安全問(wèn)題呢?

    思考:為什么遍歷時(shí)線程會(huì)不安全呢?
    未完待續(xù)。

    總結(jié)

    以上是生活随笔為你收集整理的关于list遍历时sychronizedList方法和synchronized同步块的线程安全问题思考的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。