Почему может завершаться выполнение кода в Thread?

Я пытаюсь создать новый поток, но код внутри него не срабатывает и не выбрасывает никой ошибки.

 new Thread(() -> {
            for(int i = 0; i < 10; i++){
                try {
                    Thread.sleep(100);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
                System.out.println("Thread " + i);
            }
        }).start();

Данный поток я использую когда в Observer срабатывает метод onNext(). Поток обрабатывает полученные данные. Подскажите, может что-то не делаю. Уже совсем запутался.


Ответы (1 шт):

Автор решения: SaNFeeD

Проблема решилась. Выражаю огромную благодарность Дмитрию Ерохину, Arty Morris.

Код был переписан следующим образом.

  Runnable task = () -> {
            System.out.println("Priority thread: " + Thread.currentThread().getPriority());
            System.out.println("Is daemon: " + Thread.currentThread().isDaemon());
            for(int i = 0; i < 10; i++){
                System.out.println("Thread " + i);
                try {
                    Thread.sleep(100);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        };

        Thread thread = new Thread(task);
        thread.setDaemon(false);
        thread.start();

Данный поток почему-то вызывался как демон поток. Это было проверено с помощью

 System.out.println("Is daemon: " + Thread.currentThread().isDaemon());

Затем, просто "вручную" выставлен тип потока через

thread.setDaemon(false);

Далее весь код заработал, как нужно. Опять же выражаю огромную благодарностью всем, кто помог. Спасибо.

→ Ссылка