Встречается на собеседованиях • сегодня
Какие знаешь способы запуска потока
В Java есть несколько способов запуска потока:
1. **Наследование от `Thread`**
Переопределяем метод `run()` и вызываем `start()`:
```java
class MyThread extends Thread {
public void run() {
System.out.println("Thread is running");
}
}
new MyThread().start();
```
2. **Реализация `Runnable`**
Передаем объект `Runnable` в конструктор `Thread`:
```java
Runnable task = () -> System.out.println("Runnable task");
new Thread(task).start();
```
3. **Использование `ExecutorService`**
Запуск через пул потоков:
```java
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> System.out.println("Executor task"));
executor.shutdown();
```
4. **`Callable` и `Future`**
Для потоков, возвращающих результат:
```java
ExecutorService executor = Executors.newSingleThreadExecutor();
Future future = executor.submit(() -> "Callable result");
System.out.println(future.get());
executor.shutdown();
```
5. **Java 8+ `CompletableFuture`**
Асинхронный запуск:
```java
CompletableFuture.runAsync(() -> System.out.println("Async task"));
```
Основное отличие — `start()` создает новый поток, а `run()` выполняет код в текущем потоке. Для многозадачности всегда используйте `start()` или пулы потоков.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы