interrupt () работает не так, как ожидалось (как работает прерывание?)

Я хочу прервать поток, но вызов interrupt () не работает похоже работает. Ниже приведен пример кода:

public class BasicThreadrRunner {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Basic(), "thread1");
        t1.start();
        Thread t3 = new Thread(new Basic(), "thread3");
        Thread t4 = new Thread(new Basic(), "thread4");
        t3.start();
        t1.interrupt();
        t4.start();
    }
}
class Basic implements Runnable{
    public void run(){
        while(true) {
            System.out.println(Thread.currentThread().getName());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                System.err.println("thread: " + Thread.currentThread().getName());
                //e.printStackTrace();
            }
        }
    }
}

, но вывод выглядит так, как будто поток 1 все еще выполняется. Может ли кто-нибудь объяснить это, а также то, как работает interrupt () ? Спасибо!

5
задан Matteo Molnar 27 August 2019 в 14:32
поделиться