併發執行緒的三個重要概念

2021-10-03 11:34:58 字數 773 閱讀 1191

對基本資料型別的變數讀取和賦值是保證了原子性的,要麼都成功,要麼都失敗,這些操作不可中斷。

比如 i = 10

a = 10 原子性

b=a 不滿足 read a , 賦值 b

c++ 不滿足 read c ; add , 賦值 c

c=c+1 不滿足 read c;add; 賦值 c

可以使用volatile 關鍵字保證可見性

什麼是可見性,兩個執行緒分別從主記憶體中獲取資料,快取到自己快取區中,乙個執行緒對資料進行改變了,另乙個執行緒立馬可以感應到,這叫做可見性,可以使用volatile 關鍵字進行修飾所操作的資料。

1 **的執行順序,編寫的前的發生在編寫後面的

2 unlock 必須發生在lock後

3 volatile 修飾的變數,對乙個變數的寫操作先於讀操作

3 傳遞規則,操作a先於b,b先於c,那麼a肯定先於c

4 執行緒啟動規則,start先於run

5 執行緒中斷規則,interrupt 這個動作,必須發生在捕獲該動作之前。

6 物件銷毀規則,初始化發生在finalize之前

1 保證重排序的是不會把指令放到屏障的前面,也不會把前面的放在後面。

2 強制對快取的修改操作立刻寫入主記憶體。

3 如果是寫操作,它會導致其他cpu中的快取失效。

一旦乙個貢獻變數被volatile修飾,具備兩層含義

1 保證了不同執行緒間的可見性

2 禁止對其進行重排序,也就是保證了有序性

3 並未保證原子性

三個重要概念的區分

計算機只能理解機器語言,不能理解高階語言,因此需要將高階語言轉化為計算機語言。依據語言轉化方式的不同,區分出了編譯型語言和解釋型語言。編譯型語言,指的是一次性的將高階語言轉化為計算機語言,此類程式執行前會將源 編譯為機器語言的檔案,如exe格式的檔案。如要執行,直接執行exe檔案即可,不需要再次編譯...

java併發程式設計中的三個概念

在併發程式設計中,我們通常會遇到以下三個問題 原子性問題,可見性問題,有序性問題。我們先看具體看一下這三個概念 原子性 原子性 即乙個操作或者多個操作 要麼全部執行並且執行的過程不會被任何因素打斷,要麼就都不執行。乙個很經典的例子就是銀行賬戶轉賬問題 比如從賬戶a向賬戶b轉2000元,那麼必然包括2...

集線器的三個重要概念及其優缺點

集線器的概念 集線器的英文稱為 hub hub 是 中心 的意思,集線器的主要功能是對接收到的訊號進行再生整形放大,以擴大網路的傳輸距離,同時把所有節點集中在以它為中心的節點上。它工作於osi 開放系統互聯參考模型 參考模型第一層,即 物理層 集線器與網絡卡 網線等傳輸介質一樣,屬於區域網中的基礎裝...