請第一次看到這個片段:主題 - 睡眠和中斷
public static void main(String[] args) throws InterruptedException {
Thread anotherThread = new Thread(() -> {
Integer countB = 0;
while (true) {
try {
System.out.println("B count: " + ++countB);
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
anotherThread.start();
Integer countA = 0;
while (true) {
System.out.println("A count: " + ++countA);
Thread.sleep(1000);
}
}
可正常工作。我看到countA約爲countB的2倍。
現在我一個行添加到外while循環:
public static void main(String[] args) throws InterruptedException {
Thread anotherThread = new Thread(() -> {
Integer countB = 0;
while (true) {
try {
System.out.println("B count: " + ++countB);
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
anotherThread.start();
Integer countA = 0;
while (true) {
anotherThread.interrupt();
System.out.println("A count: " + ++countA);
Thread.sleep(1000);
}
}
主線程中斷anotherThread。在我這樣做後,countA不再是2x countB。他們現在總是相差一個。
爲什麼這麼說?睡眠/中斷如何工作?
你覺得中斷怎麼辦?你讀過javadoc嗎? –
@ScaryWombat不要粗魯,我認爲這是有效的問題 – Betlista
@Betlista什麼是粗魯?我只是問兩個問題。不知道答案是什麼,我甚至不能回答這個問題。 –