当前位置:首页 » 密码管理 » 线程访问全局变量

线程访问全局变量

发布时间: 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