Спецификация Java 11: Глава 17. Потоки и блокировки

Хотя большая часть обсуждения в предыдущих главах спецификации касается только поведения кода при выполнении одного оператора или выражения за раз, то есть одним потоком, виртуальная машина Java может поддерживать множество потоков выполнения одновременно. Эти потоки независимо выполняют код, который работает со значениями и объектами, находящимися в общей основной памяти. Потоки могут поддерживаться за счет наличия множества аппаратных процессоров, квантования времени одного аппаратного процессора или квантования времени многих аппаратных процессоров.

Потоки представлены классом Thread. Единственный способ для пользователя создать поток - создать объект этого класса; каждый поток связан с таким объектом. Поток запускается, когда метод start() вызывается для соответствующего объекта Thread.

Поведение потоков, особенно при неправильной синхронизации, может сбивать с толку и противоречить интуиции. В этой главе описывается семантика многопоточных программ; он включает правила, при которых значения можно увидеть при чтении из общей памяти, которая обновляется несколькими потоками. Поскольку спецификация аналогична моделям памяти для различных аппаратных архитектур, эта семантика известна как модель памяти языка программирования Java. Когда не может возникнуть путаницы, мы будем просто называть эти правила "моделью памяти".

Эта семантика не предписывает, как должна выполняться многопоточная программа. Скорее, они описывают поведение, которое разрешено демонстрировать многопоточным программам. Любая стратегия выполнения, которая генерирует только разрешенное поведение, является приемлемой стратегией выполнения.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки