Thread之volatile關鍵字

2021-10-19 05:36:01 字數 1397 閱讀 7651

場景二(通過執行緒呼叫)

場景三(通過執行緒呼叫,用volatile修飾)

總結使變數在多個執行緒間可見

通俗來說就是,當執行緒a對乙個被volatile關鍵字修飾的變數進行修改,該變數對於其它執行緒是可見的,即執行緒每次獲取該變數的值都是最新的。

/**

* 測試volatile關鍵字

* @author layman

*/public

class

demo09

}class

demo09service

extends

thread

public

void

dosomething()

system.out.

println

("dosomething方法執行結束----");

}}

執行結果

結論main執行緒被卡在service.dosomething()方法中,無暇繼續往下執行。

public

class

demo09

}class

demo09service

extends

thread

public

void

dosomething()

system.out.

println

("dosomething方法執行結束----");

}}

執行結果

結論

package com.hanyxx.thread;

/** * 測試volatile關鍵字

* @author layman

* @date 2021/2/6

*/public

class

demo09

}class

demo09service

extends

thread

public

void

dosomething()

system.out.

println

("dosomething方法執行結束----");

}}

執行結果

執行緒鎖之volatile

當且僅當滿足一下所有條件時,才應該使用volatile變數 1 對變數的寫入操作不依賴變數的當前值,或者你能確保只有單個執行緒更新變數的值。2 該變數不會與其他狀態量一起納入不變性條件中。3 在訪問變數時不需要加鎖。volatile變數通常用作某個操作完成 發生終端或者狀態的標誌。volatile的...

CUDA之thread訪問總結

問 對於結構體陣列 typedef struct float3 float3 d data id id為執行緒索引號,則對於乙個 wrap,為其中的每個執行緒讀取4位元組需要幾次訪存呢?為其中的每乙個執行緒讀取12位元組需要幾次訪存呢?答 如果只是為warp中的每個執行緒讀1個該結構體的例項的乙個分...

Thread之interrupt 函式解析

函式interrupt 對處於runnable或waiting 包括time waiting 狀態的執行緒進行中斷,作用如下 例如 package interrupt public class mythread extends thread 上述 產生的執行緒,執行後狀態為runnable。對其使用...