TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #138 5.83K
Как создать поток ?
Спросят с вероятностью 12%

Существует несколько способов создания потока выполнения. Самые распространённые из них — это использование класса Thread и интерфейса Runnable.

1️⃣Использование класса Thread

Можно использовать напрямую, переопределив его метод run(). Это наиболее прямой способ создания потока, но он ограничивает возможность наследования от других классов.
public class MyThread extends Thread {
@Override
public void run() {
// Код, который будет выполнен в новом потоке
System.out.println("Поток выполнен: " + Thread.currentThread().getName());
}

public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // Запуск потока
}
}


2️⃣Использование интерфейса Runnable

Данный интерфейс предоставляет единственный метод run(), который должен быть реализован. Объект Runnable затем может быть передан в конструктор Thread. Этот способ является предпочтительным, так как он поддерживает композицию и не ограничивает использование наследования от других классов.
public class MyRunnable implements Runnable {
@Override
public void run() {
// Код, который будет выполнен в новом потоке
System.out.println("Поток выполнен: " + Thread.currentThread().getName());
}

public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start(); // Запуск потока
}
}


3️⃣Использование лямбда-выражений (с Java 8)

С их появлением создание и запуск потоков стало ещё проще, особенно когда реализация run() небольшая и не требует отдельного класса.
public class LambdaThreadExample {
public static void main(String[] args) {
new Thread(() -> System.out.println("Поток выполнен: " + Thread.currentThread().getName())).start();
}
}


4️⃣Использование Executors (начиная с Java 5)

Представила пулы потоков с помощью данного фреймворка, который позволяет управлять группой асинхронных задач более эффективно, чем создание отдельного потока для каждой задачи.
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ExecutorExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(() -> System.out.println("Поток выполнен: " + Thread.currentThread().getName()));
executor.shutdown(); // Важно завершить работу Executor после использования
}
}


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

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
  • 👍 33
  • ❤ 3
More from @easy_java_ru
  1. Oct 12, 2026🤔 Жизненный цикл сервлетов? 1. Загрузка и инициализация (init); 2. Обработка запроса (ser…
  2. Oct 12, 2026🤔 Как остановить поток? Остановить поток в Java можно несколькими способами, но важно пом…
  3. Oct 11, 2026🤔 Какой класс позволяет читать данные из входного байтового потока в формате примитивных…
  4. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  5. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  6. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →