刚接触多线程编程,想复现一下书上写的“实例变量共享导致的非线程安全问题”,但是发现怎么尝试都无法得出错误的结果,运行了几十次都是 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());
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.