【发布时间】:2016-06-27 00:28:29
【问题描述】:
public class Main {
static int i = 0;
public static void main(String[] args) {
for (; i < 2; i++)
new Thread(() -> System.out.println(i)).start();
}
}
我希望上面的代码也能打印出来
0
1
或
1
0
但令我惊讶的是,我得到了
2
2
【问题讨论】:
-
有一个骗子(不是完美的,但是here is one),它解释了当访问(这里由线程本身)和
i已经是 "2 "(在某些情况下也可以是 "1")直到线程真正开始。这一切都取决于调度程序。
标签: java multithreading concurrency