您现在的位置是:首页
>
多个线程调用一个函数 Java中对线程间的变量访问也需要同步控制
Java中对线程间的变量访问也需要同步控制 一个简单的计数器 本来以为不需要同步保护 后来发现不行 还是得加上 程序 u lic cla Te tMai { i t i = //计数器初始
Java中对线程间的变量访问也需要同步控制
一个简单的计数器 本来以为不需要同步保护 后来发现不行 还是得加上 程序
public class TestMain {
int i = ; //计数器初始值为
public static void main(String[] args) {
TestMain c = new TestMain();
Worker x = new Worker(c);
for (int i= ; i< ; i++) { // 个线程
new Thread(x) start();
}
while (true) { //每隔一秒中输出计数器的值
System out println(c i);
try {
Thread sleep( );
} catch (InterruptedException e) {
}
}
}
}
class Worker implements Runnable {
TestMain c;
public Worker(TestMain c) {
this c = c;
}
public void run() {
try {
Thread sleep((int)(Math random() * )); //随机Sleep一段时间
} catch (InterruptedException e) {
}
c i++; //计数器自增 问题在这里 并发写入
}
}
上面的程序 %的几率结果是 其余的是
c i++一句需要并发保护
本来我以为Java里面++是原子的呢 呵呵

lishixinzhi/Article/program/Java/gj/201311/11157
很赞哦! (1033)
相关文章
- Java多线程同步设计中使用Metux[1]
- 多线程并发的处理方式 Java多线程同步-BusyFlag或Lock
- 多线程并发的处理方式 Java多线程同步如何从JVM的角度体会
- java如何实现线程同步 Java线程和Objec之间的不解之缘
- 并发执行和并行执行 在JAVA中并行和并发机制的区别?
- 多线程并发的处理方式 初学Java多线程:使用Synchronized关键字同步类方法
- 多线程变量同步 Java的多线程-实现多线程及线程的同步
- java多线程的共享变量 Java多线程锁如何进行数据同步共享
- 多线程全局变量 java关于多线程的部分操作
- c语言线程同步 JAVA 线程编程----两个线程的程序
爱学记

微信收款码
支付宝收款码