Перейти к основному содержимому

· 4 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим двоичные семафоры и повторные блокировки. Кроме того, мы сравним их друг с другом, чтобы увидеть, какой из них лучше всего подходит для обычных ситуаций.

2. Что такое двоичный семафор?

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

Для этого он сохраняет только одно разрешение для доступа. Следовательно, бинарный семафор имеет только два состояния: одно доступное разрешение или нулевое доступное разрешение .

· 6 мин. чтения

1. Обзор

В этой статье мы рассмотрим одну из самых полезных конструкций java.util.concurrent для решения проблемы параллельного производителя-потребителя. Мы рассмотрим API интерфейса BlockingQueue и то, как методы этого интерфейса облегчают написание параллельных программ.

Позже в этой статье мы покажем пример простой программы с несколькими потоками-производителями и несколькими потоками-потребителями.

2. Типы блокирующих очередей

Мы можем выделить два типа BlockingQueue :

· 11 мин. чтения

1. Введение

В этом руководстве мы рассмотрим некоторые из наиболее распространенных проблем параллелизма в Java. Мы также узнаем, как их избежать и их основные причины.

2. Использование потокобезопасных объектов

2.1. Совместное использование объектов

· 10 мин. чтения

1. Введение

Это руководство представляет собой руководство по функциональным возможностям и вариантам использования класса CompletableFuture , который был представлен как улучшение API параллелизма Java 8.

2. Асинхронные вычисления в Java

Трудно рассуждать об асинхронных вычислениях. Обычно мы хотим думать о любом вычислении как о серии шагов, но в случае асинхронного вычисления действия, представленные в виде обратных вызовов, как правило, либо разбросаны по коду, либо глубоко вложены друг в друга . Все становится еще хуже, когда нам нужно обработать ошибки, которые могут возникнуть на одном из шагов.

· 2 мин. чтения

./085987ac0463ce22e3e175fbc1c7c2d4.png

Основы параллелизма в Java

./ad88597203a91b50ab8d7eb774f0b16f.png

Расширенный параллелизм в Java

./a24f166de8204c49751f0d5ba0a27f43.png

Другие ресурсы параллелизма

· 14 мин. чтения

1. Введение

Параллелизм в Java — одна из самых сложных и продвинутых тем, поднимаемых на технических собеседованиях. В этой статье даны ответы на некоторые вопросы интервью по теме, с которыми вы можете столкнуться.

Q1. В чем разница между процессом и потоком?

И процессы, и потоки являются единицами параллелизма, но у них есть фундаментальное отличие: процессы не используют общую память, в отличие от потоков.

· 6 мин. чтения

1. Обзор

Проще говоря, блокировка — это более гибкий и сложный механизм синхронизации потоков, чем стандартный синхронизированный блок.

Интерфейс Lock существует со времен Java 1.5. Он определен внутри пакета java.util.concurrent.lock и предоставляет обширные операции для блокировки.

В этой статье мы рассмотрим различные реализации интерфейса блокировки и их приложения.

2. Различия между блокировкой и синхронизированным блоком

· 8 мин. чтения

1. Обзор

В этом руководстве мы познакомимся с библиотекой JCTools (Java Concurrency Tools).

Проще говоря, это предоставляет ряд служебных структур данных, подходящих для работы в многопоточной среде.

2. Неблокирующие алгоритмы

Традиционно многопоточный код, работающий с изменяемым общим состоянием, использует блокировки для обеспечения согласованности данных и публикации (изменения, сделанные одним потоком, видны другому).

· 4 мин. чтения

1. Обзор

В этой быстрой статье мы рассмотрим класс ConcurrentSkipListMap из пакета java.util.concurrent .

Эта конструкция позволяет нам создавать потокобезопасную логику без блокировок. Это идеально для проблем, когда мы хотим сделать неизменяемый снимок данных, пока другие потоки все еще вставляют данные в карту.

С помощью этой конструкции мы будем решать задачу сортировки потока событий и получения моментального снимка событий, произошедших за последние 60 секунд .

2. Логика потоковой сортировки

· 9 мин. чтения

1. Обзор

Карты , естественно, являются одним из самых распространенных стилей коллекции Java.

И, что важно, HashMap не является потокобезопасной реализацией, в то время как Hashtable обеспечивает потокобезопасность за счет синхронизации операций.

Несмотря на то, что Hashtable является потокобезопасным, он не очень эффективен. Другая полностью синхронизированная карта, Collections.synchronizedMap, также не демонстрирует высокой эффективности. Если мы хотим потокобезопасности с высокой пропускной способностью при высоком уровне параллелизма, эти реализации не подходят.

Чтобы решить эту проблему, Java Collections Framework представила ConcurrentMap в Java 1.5 .

Следующие обсуждения основаны на Java 1.8 .