場景二(通過執行緒呼叫)
場景三(通過執行緒呼叫,用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。對其使用...