YCF*_*F_L 2 java multithreading java-8
我创建这段代码:
static int i;
public static void main(String[] args) throws InterruptedException {
for (i = 1; i <= 5; i++) {
new Thread(() -> {
hello(i);
}).start();
}
}
public static void hello(int i) {
System.out.println("Thread number = " + i);
}
Run Code Online (Sandbox Code Playgroud)
当你看到这个,你认为它会打印出来:
Thread number = 1
Thread number = 2
Thread number = 3
Thread number = 4
Thread number = 5
Run Code Online (Sandbox Code Playgroud)
但这不正确它打印一个随机的int和它打印的不合逻辑6有时像:
Thread number = 5
Thread number = 6
Thread number = 6
Thread number = 6
Thread number = 6
Run Code Online (Sandbox Code Playgroud)
我添加Thread.sleep(2000);后:
for (i = 1; i <= 5; i++) {
new Thread(() -> {
hello(i);
}).start();
Thread.sleep(2000);
}
Run Code Online (Sandbox Code Playgroud)
它向我展示了一个正确的结果:
Thread number = 1
Thread number = 2
Thread number = 3
Thread number = 4
Thread number = 5
Run Code Online (Sandbox Code Playgroud)
为什么它告诉我第一个结果,它显示我6,实际上6不存在?为什么它不打印有序int 1,2,3,...?对此有何解释?
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |