В Java существует два типа потоков:
- Потоки пользователя (user threads) - это потоки, создаваемые пользователем в рамках своей программы. Они обрабатываются JVM как обычные потоки, и их выполнение не влияет на работу системных процессов. Все потоки, созданные через класс Thread, по умолчанию являются потоками пользователя.
- Потоки демоны (daemon threads) - это потоки, которые выполняются в фоновом режиме и завершаются автоматически, когда завершается последний поток пользователя. Они используются для выполнения служебных задач, таких как мониторинг или очистка памяти. Чтобы создать демон-поток, нужно вызвать метод setDaemon(true) у объекта класса Thread до запуска потока.
Пример создания демон-потока:
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.setDaemon(true); // Устанавливаем поток как демон-поток thread.start();
}
}
class MyRunnable implements Runnable {
public void run() {
while(true) {
// Код, который будет выполняться в потоке }
}
}
В этом примере мы создаем поток исполнения, реализующий интерфейс Runnable. Затем мы устанавливаем этот поток как демон-поток, вызывая метод setDaemon(true) объекта класса Thread. В методе run() мы выполняем бесконечный цикл, чтобы демон-поток продолжал работу до завершения программы.
Важно отметить, что когда все потоки пользователя завершаются, JVM завершает выполнение программы независимо от того, выполняются ли еще демон-потоки. Если в программе не остается потоков пользователя, то все запущенные демон-потоки будут автоматически остановлены.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov