国产精一区二区_午夜视频99_免费白白视频_中文字幕一区免费

熱門文章> 線程安全的方式有哪些 >

線程安全的方式有哪些

36氪企服點評小編
2022-12-01 15:50
672次閱讀

|企服解答

  線程安全的方式有哪些:1.互斥同步;2.非阻塞同步;3.無同步方案;等等。

線程安全的方式有哪些

線程安全的方式有哪些

  1.互斥同步

  使用互斥鎖的方式。

  優點:在共享資源搶占頻繁的情況下,能很好的保護共享資源的同步使用,防止數據錯誤。

  缺點:性能較差,因線程需要阻塞等待;線程阻塞喚醒需要用戶態與核心態切換,會消耗cpu性能。

  2.非阻塞同步

  顧名思義,就是通過不阻塞線程的方式進行共享資源的同步操作,具體方法有就是使用CAS思想進行并發策略,具體詳情如下:

  具體操作方案:

  CAS設計中包含三個操作數:

  讀寫的內存位置(V)

  進行比較的預期原值(A)

  擬寫入的新值(B)

  如果內存位置V的值與預期原值A相匹配,那么處理器會自動將該位置值更新為新值B,否則處理器不做任何操作。

  當多個線程嘗試使用CAS同時更新同一個變量時,只有其中一個線程能更新變量的值,而其它線程都失敗,失敗的線程沒有阻塞,而是進行“自旋”等待。

  3.無同步方案

  一個方法如果不涉及共享數據,那它自然就無須任何同步措施去保證多線程的安全性。

  (1)可重入代碼

  多個線程訪問同一個方法的局部變量時,是不會出現線程安全問題,因為局部變量存儲在虛擬機棧中,屬于線程私有的。

  (2)線程本地存儲

  把共享數據的可見范圍限制在同一個線程之內,無須同步來能保證線程之間不出現數據爭用的問題。ThreadLocal并不是一個Thread,而是Thread的內部變量,用于存放本線程使用的數據,僅本線程可見。

[免責聲明]

文章標題: 線程安全的方式有哪些

文章內容為網站編輯整理發布,僅供學習與參考,不代表本網站贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請及時溝通。發送郵件至36dianping@36kr.com,我們會在3個工作日內處理。

相關文章
最新文章
查看更多
關注 36氪企服點評 公眾號
打開微信掃一掃
為您推送企服點評最新內容
消息通知
咨詢入駐
商務合作