Я новичок в многопоточности (как в целом, так и в Java) и просто пытаюсь поиграть с некоторыми основными аспектами прерванных исключений.Получение InterruptedException для игнорирования прерывания
Когда я запускаю следующий код, я получаю следующий результат -
1: До свидания, мир! 1: Привет, мир! 2: До свидания, мир! 3: До свидания, Мир! 4: До свидания, Мир! 5: До свидания, Мир!
Но я не понимаю, почему поток 1 (поток «Hello, World!») Останавливается, поскольку его предложение Catch пусто (что я думал, что он игнорирует InterruptedException
и просто закончит поток).
Я уверен, что у меня что-то не хватает, но я просто не знаю, что это такое.
Спасибо за любую помощь, которую вы можете предложить!
public class GreetingProducer implements Runnable
{
String greeting;
public GreetingProducer (String greetingIn)
{
greeting = greetingIn;
}
public void run()
{
try
{
for (int i = 1; i <=5; i++)
{
System.out.println(i + ": " + greeting);
Thread.sleep(500);
}
}
catch (InterruptedException e)
{
}
}
public static void main(String[] args)
{
Runnable r1 = new GreetingProducer("Hello, World!");
Runnable r2 = new GreetingProducer("Goodbye, World!");
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
t1.interrupt();
}
}
Как сказал @Jean Logeart, он по-прежнему выходит из нити. Дополнительные сведения см. По адресу http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html. – nyxaria
1: До свидания, Мир! 1: Привет, мир! java.lang.InterruptedException: сон прерывается \t на java.lang.Thread.sleep (Native Method) \t в MultithreadingExamples.GreetingProducer.run (GreetingProducer.java:27) \t на java.lang.Thread.run (Thread .java: 722) 2: До свидания, мир! 3: До свидания, Мир! 4: До свидания, Мир! 5: До свидания, Мир! –