Почему свойство setdaemon не завершает дочерний поток, когда основной поток завершился? - PullRequest
1 голос
/ 05 июня 2019

Я выполняю следующую часть кода, чтобы понять концепцию потоков демона и завершение потока. программа продолжает печатать даже после завершения основного метода. Я что-то здесь упускаю?

package threading;

public class ThreadInterruption {

    public static void main(String[] args) {
        Thread t = new Thread(new RanThread());
        t.start();
        t.setDaemon(true);
        t.interrupt();
    }

}

class RanThread implements Runnable{

    @Override
    public void run() {
        int count=0;
        while(true) {
            System.out.println("Ha Ha Ha "+ count);
            count=count+1;

        }

    }


}

Спасибо заранее.

1 Ответ

0 голосов
/ 05 июня 2019

Вы должны установить поток в качестве демона, прежде чем запускать его.

Если вы читаете документы API, в нем говорится: «Этот метод должен быть вызван до запуска потока».

Так что поменяйте местами строки start и setDaemon, и все будет хорошо.

...