刚接触多线程编程,想复现一下书上写的“实例变量共享导致的非线程安全问题”,但是发现怎么尝试都无法得出错误的结果,运行了几十次都是 5000 ,是因为在某一项生成过程中被自动优化了吗?附上代码:
public class MyThread extends Thread{
public int getCount() {
return count;
}
private int count = 0;
@Override
public void run() {
super.run();
for(int i = 0 ; i < 1000 ; i++)
{
count++;
}
}
}
import static java.lang.Thread.sleep;
public class Main {
public static void main(String[] args) throws InterruptedException {
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();
sleep(1000);
System.out.println(mythread.getCount());
}
}