執行緒間不共享的靜態字段

2022-02-24 20:18:33 字數 815 閱讀 9555

預設情況下,靜態欄位在同乙個應用程式域中訪問這些欄位的所有執行緒間共享。但是使用threadstaticattribute將任意static欄位標記為執行緒間不可共享的。

//例如下面**:

pubic class

foo

下面不妨做個測試:

首先寫個常規的static欄位使用方法:

public class threadstaticfield

" + $" 包含靜態變數的值為:";

console.writeline(msg);}}

那麼第二種是使用了threadstaticattribute的靜態欄位的方法:

public class threadstaticfield

" + $" 包含靜態變數的值為:";

console.writeline(msg);}}

呼叫方法為:

public

static

void

test()

執行程式結果為:

分析:很明顯可以看到,測試1的當前執行緒的雜湊值為9,而新執行緒的雜湊值為10,其餘都相同。

測試2中bar欄位僅在訪問它的第乙個執行緒中被初始化,在所有其他執行緒中,這個欄位被初始化為null,因此要記住:在任何執行緒中使用標記為threadstaticattribute的靜態字段之前,都要進行初始化,否則僅有當前的乙個執行緒得到該初始值。

1 0執行緒 執行緒間的共享

多個執行緒 可以共享同乙個程序中的資源 多執行緒對程序中的 公共變數 進行同時訪問 如果不加鎖的時候,有可能訪問不到。1 synchronize 本質 對具體物件的加鎖 類鎖 對類在虛擬機器中的class物件的加鎖 物件鎖 保證物件的原子性 同步塊 加鎖 方法 加鎖 類說明 synchronized...

執行緒間的資料共享

執行緒間的資料共享可以通過兩種方式 通過thread子類建立程序的方法 通過runnable介面實現程序之間的共享 比較這兩種實現程序共享的區別 thread子類建立程序 package practice4 public class threadsale extends thread public ...

執行緒間共享資料

首先給大家分享乙個巨牛巨牛的人工智慧教程,是我無意中發現的。教程不僅零基礎,通俗易懂,而且非常風趣幽默,還時不時有內涵段子,像看 一樣,哈哈 我正在學習中,覺得太牛了,所以分享給大家!點這裡可以跳轉到教程 一 每個執行緒執行的 相同 若每個執行緒執行的 相同,共享資料就比較方便。可以使用同乙個run...