Рубрика Параллелизм в Java

Взаимная блокировка в Java

Следует избегать особого типа ошибок, имеющего отношение к многозадачностии называемого взаимной блокировкой, которая происходит в том случае, когда потоки исполнения имеют циклическую зависимость от пары синхронизированных объек­тов. Допустим, один поток исполнения входит в монитор объекта Х, а другой — в…

Применение исполнителя в языке Java

В параллельном API поддерживается средство, называемое исполнителем и предназначенное для создания потоков исполнения и управления ими. В этом отношении исполнитель служит альтернативой управлению потоками исполне­ния средствами класса Thread.

Класс Phaser, примеры реализации кода в Java

В версии JDК 7 внедрен новый класс синхронизации под названием Phaser. Главное его назначение — синхронизировать потоки исполнения, которые пред­ставляют одну или несколько стадий (или фаз) выполнения действия. Например, в прикладной программе может быть несколько потоков исполнения, реализующих три стадии…

Приоритеты потоков исполнения в Java

Планировщик потоков использует приоритеты потоков исполнения, чтобы принять решение, когда разрешить исполнение каждому потоку. Теоретически вы­сокоприоритетные потоки исполнения получают больше времени ЦП, чем низко­приоритетные. А на практике количество времени ЦП, которое получает потоки сполнения, нередко зависит не только от его…

Класс Exchanger, примеры реализации кода в Java

Вероятно, наиболее интересным с точки зрения синхронизации является класс Exchanger, предназначенный для упрощения процесса обмена данными между двумя потоками исполнения. Принцип действия класса Exchanger очень прост: он ожидает до тех пор, пока два отдельных потока исполнения не вызовут его метод…

Класс CyclicBarrier, примеры реализации кода в Java

В программировании нередко возникают такие ситуации, когда два или больше потока должны находиться в режиме ожидания в предопределенной точке исполне­ния до тех пор, пока все эти потоки не достигнут данной точки. Для этой цели в параллельном API предоставляется класс CyclicBarrier.…

Класс CountDownLatch, примеры реализации кода в Java

Иногда требуется, чтобы поток исполнения находился в режиме ожидания до тех пор, пока не наступит одно (или больше) событие. Для этих целей в парал­лельном API предоставляется класс CountDownLatch, реализующий самоблокировку с обратным отсчетом. Объект этого класса изначально создается с количеством…

Класс Semaphore, примеры реализации кода в Java

Первым сразу же распознаваемым среди объектов синхронизации является семафор, реализуемый в классе Semaphore. Семафор управляет доступом к обще­му ресурсу с помощью счетчика. Если счетчик больше нуля, доступ разрешается,а если он равен нулю, то в доступе будет отказано. В действительности этот…