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

88 записей с тегом "Java Concurrency"

Посмотреть все теги

· 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 .

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

1. Введение

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

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

2. Использование в параллельном программировании

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

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

1. Введение

CyclicBarriers — это конструкции синхронизации, которые были представлены в Java 5 как часть пакета java.util.concurrent .

В этой статье мы рассмотрим эту реализацию в сценарии параллелизма.

2. Параллелизм Java — синхронизаторы

Пакет java.util.concurrent содержит несколько классов, помогающих управлять набором взаимодействующих друг с другом потоков. Некоторые из них включают:

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

1. Введение

В этом руководстве мы сравним CyclicBarrier и CountDownLatch и попытаемся понять сходства и различия между ними.

2. Что это?

Когда дело доходит до параллелизма, может быть сложно понять, для чего каждый из них предназначен.

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

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

1. Обзор

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

2. Разница между демоном и пользовательскими потоками

Java предлагает два типа потоков: пользовательские потоки и потоки демона.

Пользовательские потоки — это потоки с высоким приоритетом. JVM будет ждать, пока любой пользовательский поток завершит свою задачу, прежде чем завершить ее.