Встречается на собеседованиях • сегодня

Как реализовывал многопоточность

В Java многопоточность реализуется через класс Thread и интерфейс Runnable. Основные подходы:

  1. Наследование от Thread:
java
class MyThread extends Thread {
    public void run() {
        System.out.println("Thread running");
    }
}
// Запуск:
new MyThread().start();
  1. Реализация Runnable (предпочтительнее, т.к. Java не поддерживает множественное наследование):
java
class MyRunnable implements Runnable {
    public void run() {
        System.out.println("Runnable running");
    }
}
// Запуск:
new Thread(new MyRunnable()).start();
  1. Executor Framework (современный подход):
java
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -> System.out.println("Task executed"));
executor.shutdown();

Критические секции синхронизируются через:

  • synchronized методы/блоки
  • ReentrantLock
  • Atomic классы
  • volatile переменные

Важно учитывать проблемы race condition, deadlocks и livelocks. Для потокобезопасных коллекций используйте ConcurrentHashMap, CopyOnWriteArrayList и др.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы