Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpThInr 160 of 322 menu
◀ ▶

Многопоточность в Java

Пока пользователь читает статью, сервер может одновременно отдавать другим запросам превью, писать лог и проверять сессию. Если всё это делать строго по очереди в одном потоке, отклик сайта заметно проседает, хотя процессор часто простаивает в ожидании сети или диска.

Многопоточность позволяет вести несколько цепочек выполнения внутри одной JVM. Каждая такая цепочка называется потоком. У потока свой стек вызовов, но память кучи и статические поля общие для всей программы, поэтому данные нужно защищать осознанно.

Любая программа на Java стартует с главного потока, который входит в метод main. Дополнительные потоки создают явно, когда фоновая работа не должна блокировать интерфейс или когда задачу удобнее распараллелить.

В разделе для Java 27 опираемся на класс Thread и контракт Runnable. Позже в других темах встретятся пулы и высокоуровневые API, но базовые правила запуска, ожидания и прерывания те же.

Короткий пример: главный поток печатает имя текущего потока через Thread.currentThread():

public class Main { public static void main(String[] args) { Thread main = Thread.currentThread(); System.out.println(main.getName()); System.out.println(main.isAlive()); } }

Имя по умолчанию обычно main, флаг isAlive показывает, что поток ещё не завершился. В следующих уроках создадим свой поток, запустим его и дождемся окончания работы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить