Я преподавал себе потоки Java, и я заметил кое-что, что меня немного смущает. Я создал класс под названием engine
, реализующий Runnable
. Метод run просто печатает "Hello World", спит на секунду и повторяет.
В моем основном методе у меня есть:
public static void main(String[] args) {
Thread thread = new Thread(engine);
thread.start();
System.out.println("Done.");
}
Как я и ожидал, я вижу "Hello World" и "Done". напечатанный быстро, что означает, что основной метод дошел до конца, но я не ожидал, что поток, который я начал работать, продолжался даже после того, как был достигнут конец main.
Почему программа продолжает выполняться даже после основных выходов? Я бы подумал, что когда главный выход из процесса завершится, и все потоки будут очищены силой. Означает ли это, что каждый поток должен быть явно связан или убит для завершения программы Java?