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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

目錄

    • 我的難點
      • sychronizedList方法無法解決List遍歷時線程不安全問題
      • sychronizd同步塊為什么可以解決List遍歷時線程不安全問題
    • 我的思考過程

我的難點

sychronizedList方法無法解決List遍歷時線程不安全問題

關于慕課網的socket課程學習中,qiujuer老師在課程中講到:
關于多線程操作時,利用sychronizedList方法解決List內部方法線程不安全問題,但是對于list遍歷仍然會觸發異常。難點*1為什么會觸發異常呢?

sychronizd同步塊為什么可以解決List遍歷時線程不安全問題

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

我的思考過程

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

待考證*1為什么線程安全的一個List,在進行遍歷操作時會觸發線程不安全?

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

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

  • 這里的非確定問題主要指的是synchronizedList方法返回的List在遍歷時導致線程不安全問題,因為必須使用同步塊來解決這部分問題。
  • 推測此處同步塊可以解決線程不安全問題。
  • 【我的思考】:
    synchronizedList方法返回的List就是一個線程安全的list,所以遍歷這個list會破壞了這個返回的list的的線程安全嗎?
    【我的理解】:

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

    思考:為什么遍歷時線程會不安全呢?
    未完待續。

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。