Пожалуйста сначала увидеть этот фрагмент:Thread - Сон и прерывают
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 составляет приблизительно 2x от countB.
Теперь я добавить одну строку в то время как внешнего контура:
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. Они всегда отличаются друг от друга.
Почему так? Как работает сон/прерывание?
что вы считаете прерывание делает? Вы читали javadocs? –
@ScaryWombat не груб, я думаю, что это действительно вопрос – Betlista
@Betlista Что грубо? Я просто задаю два вопроса. Не зная, каковы ответы, я даже не могу ответить на вопрос. –