volatile的一些基本用法

2021-10-07 11:20:48 字數 522 閱讀 3428

首先看下以下執行緒a和執行緒b的部分**:

執行緒a:

content = initcontent(); //(1)

isinit = true; //(2)

執行緒bwhile (isinit)

從常規的理解來看,上面的**是不會出問題的,但是jvm可以對它們在不改變資料依賴關係的情況下進行任意排序以提高程式效能(遵循as-if-serial語義,即不管怎麼重排序,單執行緒程式的執行結果不能被改變),而這裡所說的資料依賴性僅針對單個處理器中執行的指令序列和單個執行緒中執行的操作,不同處理器之間和不同執行緒之間的資料依賴性不會被編譯器和處理器考慮,也即是說對於執行緒a,**(1)和**(2)是不存在資料依賴性的,儘管**(3)依賴於**(2)的結果,但是由於**(2)和**(3)處於不同的執行緒之間,所以jvm可以不考慮執行緒b而對執行緒a中的**(1)和**(2)進行重排序,那麼假設執行緒a中被重排序為如下順序:

執行緒a:

isinit = true; //(2)

content = initcontent(); //(1)

hadoop的一些基本用法

1 檢視指定目錄下內容 hadoop dfs ls 檔案目錄 eg hadoop dfs ls user 2 開啟某個已存在檔案 hadoop dfs cat file path eg hadoop dfs cat user susu 3 將本地檔案儲存至hadoop hadoop fs put 本...

ssh,scp的一些基本用法

今天終於把高階計算機網路的project做完了,3個project,乙個使用ns3模擬當前資料中心的拓撲結構,乙個在mininet下對資料中心進行模擬,最後乙個是使用pyretic來寫乙個防火牆。雖然自己之前對linux還是有一定的基礎,但是在做miniet中的實驗中使用xterm,wireshar...

Jquery的一些基本用法

1 獲取指定name的radio選定的值 var a input name price checked attr value 2 獲取指定id的html標籤中的文字內容 var a aa text 3 修改指定id的html標籤中的內容,html 也會以文字形式顯示 n html 警告 4 保留小數...