Карта / Многопоточность / Способы создания потоков

Способы создания потоков

Сначала разберём по словам, что вообще значит строка создания — это общий шаблон для любого объекта, не только потока:

Threadтип —
что за объект
tимя переменной
(как назвал)
=положить
в переменную
new Thread(…)создать
новый объект

Шаблон всегда один: Тип имя = new Тип(…). Слева — какого типа «коробка» и как её зовут, справа — new создаёт сам объект.

Thread t = new Thread(() -> {       // () -> { … } — что поток будет делать
    System.out.println("работаю в отдельном потоке");
});
t.start();   // запускает НОВЫЙ поток (не run() — тот выполнит в текущем!)

Второй способ — унаследоваться от Thread и переопределить run():

class MyThread extends Thread {
    public void run() {
        System.out.println("работаю в отдельном потоке");
    }
}
new MyThread().start();

Способ через Runnable/лямбду предпочтительнее: класс не занят наследованием Thread и может наследоваться от чего-то другого.

🎤 Закрыл тему, если можешь объяснить:
• два способа создать и запустить поток;
• почему `start()`, а не `run()`, запускает новый поток.