[Из песочницы] The Java Language Specification. Chapter 17. Threads and Locks (Перевод. Часть 1)

Привет, Хабр! Представляю вашему вниманию перевод статьи «The Java Language Specification (Chapter 17. Threads and LocksОригинал.

Глава 17. Треды и блокировки (Chapter 17. Threads and Locks)

В то время как большая часть дискусий в предыдущих главах касалась только поведения кода исполняемого одновременно и как единое и как единое утверждение или выражение одновременно, т.е. в одном треде. JVM (Java virtual machine) может поддерживать одновременно, несколько тредов исполнения. Эти треды не зависимо друг от друга используют код, код который действует на значения и объекты в нахоящиеся в общей памяти (shared main memory). Треды могут поддерживаться за счет использования множества аппаратных процессоров, временым разделение одного аппаратного процессора или временным разделением нескольких аппаратных процессоров.

Треды представлены классом Thread. Единственный способом, каким пользователь может создать тред — это создать объект этого класса; каждый тред ассоциируется с каким-то объектом. Тред начнет свое исполнение когда будет вызван метод start() на соответствующим Thread-объекте.
Поведение тредов особенно, когда синхронизация выполнена не корректно, может быть непонятно и не соответствовать ожиданиям. Эта глава описывает семантику многопоточного программирования; она содержит правила согласно которым значения могут быть увидены для чтения в общей памяти которая обновляется множеством тредов. Так как спецификация аналогична Memory Models для различных архитектур, эта сематика известна, как Memory Model языка програмирования Java. Когда не будет возникать путаницы, мы просто будем называть эти правила "Memory Model ".

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

17.1 Синхронизация (17.1. Synchronization)
Читать дальше →