亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

背景

編寫一個單例的實現(xiàn)。這里采用一個雙重檢查方式。

多線程場景下編碼的一些思考

image.png

發(fā)現(xiàn)是有問題的。主要是編譯優(yōu)化導致new 對象的順序和可見性問題。

問題修復 :只需要再單例對象 加上 volatile 修飾即可。

分析背后的原因

多線程編程中主要核心關注如下三個點 :

可見性

緩存帶來的原子性 (硬件的坑)

原子性

線程切換帶來的原子性

有序問題

編譯優(yōu)化,內存模型一般原則(HAppens-Before)

多線程場景下編碼的一些思考

image.png

這里給出一個volatile 修飾的對象 new 對象在編譯后的執(zhí)行字節(jié)碼流程,可以看出沒有做編譯優(yōu)化和順序重排。

JAVA并發(fā)常見的內存模型

valatile :禁

這條規(guī)則是指一個valatile 變量的寫操作

Happens-Before 于后續(xù)對這個 valatile變量的讀操作

le變量的讀操作

final :

編譯優(yōu)化更好點 ,生而不變,可以使勁的優(yōu)化

傳遞性:

 

Happens-Before: 前面的操作結果對后續(xù)的操作是可見的

x = 7 y = 8 在多線程中,

傳遞性 是指 :

線程A:寫 X =7 Y =8 成功

線程B:如果讀到 y = 8 ,

那么他讀到的X 肯定是7

Java 采用的是管程技術,synchronized 關鍵字及 wait()、notify()、notifyAll() 這三個方法都是管程的組成部分。

而管程和信號量是等價的,所謂等價指的是用管程能夠實現(xiàn)信號量,也能用信號量實現(xiàn)管程。但是管程在利用OOP的封裝特性解決了信號量在工程實踐上的復雜性問題,因此java采用管理機制。

因此java

就是將共享變量及其對共享變量的操作統(tǒng)一封裝起來。在下圖中,管程 X 將共享變量 queue 這個隊列和相關的操作入隊 enq()、出隊 deq() 都封裝起來了;線程 A 和線程 B 如果想訪問共享變量 queue,只能通過調用管程提供的 enq()、deq() 方法來實現(xiàn);enq()、deq() 保證互斥性,只允許一個線程進入管程。管程模型和面向對象高度契合的。

多線程場景下編碼的一些思考

image.png

管程如何解決線程間的同步問題呢?

Java 參考了 MESA 模型,語言內置的管程(synchronized)對 MESA 模型進行了精簡。MESA 模型中,條件變量可以有多個,Java 語言內置的管程里只有一個條件變量。具體如下圖所示。

多線程場景下編碼的一些思考

image.png

JAVA SDK并發(fā)包通過Lock 和Condition兩個接口’又’實現(xiàn)了一次管程。LOCK 解決互斥,Condition解決同步問題

重復造輪子

1.能夠響應終端

2.支持超時

3. 非阻塞獲取鎖

多線程場景下編碼的一些思考

image.png

輪子的理由:

1.能夠響應終端

2.支持超時

先找到一個 阻塞的線程 看執(zhí)行棧信息

多線程場景下編碼的一些思考

image.png


多線程場景下編碼的一些思考

image.png

分享到:
標簽:多線程
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定