Создание потока в 1995 и в 2020 году
Что происходит, когда программист пишет
new Thread(...)?
В джаве используется модель native threads. Это значит, что потоки создаются в операционной системе(ОС), а в JVM хранится часть контекста.
Планирование очередности и переключения между потоками тоже делает ОС. ✅ Процессорные ресурсы используются очень эффективно. В этом главное преимущество модели native threads.
Недостатки модели:
❌ создание и утилизация потоков занимает время
❌ переключение между потоками требует сохранения и загрузки контекста
❌ доступ к общим ресурсам нужно синхронизировать.
Такая модель подходит для длительных изолированных друг от друга задач.
В Java 1.1 использовалась другая модель многопоточности, которая называется green threads. В этом случае для JVM создаётся один или несколько системных потоков, а программные потоки с ними соотносятся. Переключение между потоками и работа с контекстом также выполняется JVM.
✅ эмуляции многопоточной среды там, где это не поддерживается ОС.
✅ быстрое переключение между потоками.
❌ нерациональное использование ресурсов в многопроцессорной среде. С точки зрения ОС задачи выполняются псевдопараллелльно, что ухудшает производительность.
Модель green threads устарела и считается неэффективной. Методы ручного управления потоками помечены @Deprecated начиная с Java 1.2.
Но идея переиспользования созданных ОС потоков сейчас в тренде. Java-библиотеки и некоторые версии JVM основаны на идее легковесных потоков. Fibers, coroutines, project Loom, Quasar, Kilim, Kotlin continuations – ключевые слова для дальнейшего углубления в тему.
#теория
Post #18
2.24K
- 👍 6
- ❤ 1
- 🔥 1