记录一个多线程问题中,访问共享数据的一个奇怪的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一个多线程问题中,访问共享数据的一个奇怪的问题相关的知识,希望对你有一定的参考价值。
首先是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
难道不应该是这样才正确吗?
以上是关于记录一个多线程问题中,访问共享数据的一个奇怪的问题的主要内容,如果未能解决你的问题,请参考以下文章