Почему может завершаться выполнение кода в 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);
Далее весь код заработал, как нужно. Опять же выражаю огромную благодарностью всем, кто помог. Спасибо.