當前位置:首頁 » 密碼管理 » 線程訪問全局變數

線程訪問全局變數

發布時間: 2025-03-09 12:55:09

① C#多線程同用一個全局變數,如何保持每個線程的變數不會被別的線程把值覆蓋掉

HashTable,每個線程用key往自己的value裡面寫東西,外界通過key訪問每個線程寫的東西,同理,dataTable也行啊,只要用標識區分鎮困開不同的row就可以了,或是每個線程一個dataTable,都放到dataSet中,通過表名豎枯就取到御纖念了

② 多線程系統中如何使用靜態變數

總的結論:java是線程安全的,即對任何方法(包括靜態方法)都可以不考慮線程沖突,但有一個前提,就是不能存在全局變數。如果存在全局變數,則需要使用同步機制。
如下通過一組對比例子從頭講解:
在多線程中使用靜態方法會發生什麼事?也就是說多線程訪問同一個類的static靜態方法會發生什麼事?是否會發生線程安全問題?
public class Test {
public static void operation(){
// ... do something
}
}
事實證明只要在靜態函數中沒有處理多線程共享數據,就不存在著多線程訪問同一個靜態方法會出現資源沖突的問題。下面看一個例子:
public class StaticThread implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
StaticAction.print();
}
public static void main(String[] args) {
for (int i = 0; i 100; i++) {
new Thread(new StaticThread()).start();
}
}
}
public class StaticAction {
public static int i = 0;
public static void print() {
int sum = 0;
for (int i = 0; i 10; i++) {
System.out.print("step " + i + " is running.");
sum += i;
}
if (sum != 45) {
System.out.println("Thread error!");
System.exit(0);
}
System.out.println("sum is " + sum);
}
}
實際執行的結果顯示各個線程對靜態方法的訪問是交叉執行的,但是這並不影響各個線程靜態方法print()中sum值的計算。也就是說,在此過程中沒有使用全局變數的靜態方法在多線程中是安全的,靜態方法是否引起線程安全問題主要看該靜態方法是否對全局變數(靜態變數static member)進行修改操作。
在多線程中使用同一個靜態方法時,每個線程使用各自的實例欄位(instance field)的副本,而共享一個靜態欄位(static field)。所以說,如果該靜態方法不去操作一個靜態成員,只在方法內部使用實例欄位(instance field),不會引起安全性問題。
但是,如果該靜態方法操作了一個靜態變數,則需要靜態方法中採用互斥訪問的方式進行安全處理。我們來看一下沒有使用互斥訪問的話會產生怎樣的問題:public class StaticAction {
public static int i = 0;
public static void incValue() {
int temp = StaticAction.i;
try {
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
temp++;
StaticAction.i = temp;
}
}

熱點內容
android招聘鄭州 發布:2025-03-10 01:06:37 瀏覽:109
手機問道腳本 發布:2025-03-10 01:06:37 瀏覽:166
網易大唐無雙手游專業腳本 發布:2025-03-10 00:52:13 瀏覽:77
王者榮耀安卓qq區戰區位置哪個最低 發布:2025-03-10 00:44:18 瀏覽:638
訪問手機內部存儲 發布:2025-03-10 00:35:10 瀏覽:847
本機伺服器地址改革 發布:2025-03-10 00:34:59 瀏覽:510
雲伺服器連接斷 發布:2025-03-10 00:25:56 瀏覽:853
瑞幸壓縮 發布:2025-03-10 00:23:50 瀏覽:634
linux入門學習 發布:2025-03-10 00:22:58 瀏覽:328
安卓系統固件升級怎麼退出 發布:2025-03-10 00:13:38 瀏覽:575