码迷,mamicode.com
首页 > 编程语言 > 详细

记录一个多线程问题中,访问共享数据的一个奇怪的问题

时间:2017-08-28 00:48:03      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:class   共享   执行   run   extends   super   public   sys   xtend   

首先是mythread类

public class MyThread extends Thread {
private int count =5;
public void run(){
super.run();
count--;
System.out.println("由"+this.currentThread().getName()+"计算,count="+count);
}
}


主方法类
public class Main {

public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread a = new Thread(myThread, "A");
Thread b = new Thread(myThread, "B");
Thread c = new Thread(myThread, "C");
Thread d = new Thread(myThread, "D");
Thread e = new Thread(myThread, "E");
a.start();
b.start();
c.start();
d.start();
e.start();
}
}


运行结果:

由A计算,count=4
由D计算,count=3
由E计算,count=1
由C计算,count=2 

由B计算,count=0

这个运行结果是我实在是看不懂,如果是C线程先进到run方法,执行了count--,然后E线程进到run方法,执行了count--,那么这时候,E应该输出1没错,但是C难道不应该也是输出1吗?

由A计算,count=4
由D计算,count=3
由E计算,count=1
由C计算,count=1

由B计算,count=0

难道不应该是这样才正确吗?

 



记录一个多线程问题中,访问共享数据的一个奇怪的问题

标签:class   共享   执行   run   extends   super   public   sys   xtend   

原文地址:http://www.cnblogs.com/changeCode/p/7440773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!