Easythread

Как создать поток в Java?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Три способа: extends Thread, implements Runnable (предпочтительно — отделяет задачу от потока), implements Callable через ExecutorService (возвращает результат).

// 1. extends Thread
class MyThread extends Thread {
    public void run() { System.out.println("running"); }
}
new MyThread().start();

// 2. Runnable — предпочтительно
Runnable r = () -> System.out.println("running");
new Thread(r).start();

// 3. Callable через ExecutorService — возвращает результат
Callable<Integer> c = () -> 42;
Future<Integer> f = executor.submit(c);
Integer result = f.get();   // блокирует до готовности
  • start() запускает новый поток ОС и вызывает run(); run() — обычный метод в текущем потоке;
  • В production не создавать Thread вручную — использовать ExecutorService;
  • Virtual threads (Java 21): Thread.startVirtualThread(r) — лёгкие потоки.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.