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

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

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

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

1. Введение

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

В этой статье мы рассмотрим локальные переменные и почему они потокобезопасны.

2. Память стека и потоки

Начнем с краткого обзора модели памяти JVM.

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

1. Введение

В этом руководстве мы обсудим причину и возможные способы устранения ошибки java.lang.OutOfMemoryError: невозможно создать новый собственный поток .

2. Понимание проблемы

2.1. Причина проблемы

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

1. Обзор

В этой статье мы рассмотрим конструкцию Phaser из пакета java.util.concurrent . Это очень похожая конструкция на CountDownLatch , которая позволяет нам координировать выполнение потоков. По сравнению с CountDownLatch имеет некоторые дополнительные функции.

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

2. Фазер API

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

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

1. Введение

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

В этом уроке мы рассмотрим Quasar, одну из таких библиотек, которая предлагает поддержку совместных программ.

2. Настройка

Мы будем использовать последнюю версию Quasar, для которой требуется Java 11 или выше. Но пример приложения также будет работать с предыдущими версиями Quasar, совместимыми с Java 7 и 8.

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

1. Обзор

Executor Framework в Java — это попытка отделить отправку задачи от выполнения задачи. Хотя этот подход очень хорошо абстрагирует детали выполнения задачи, иногда нам все же нужно настроить его для еще более оптимального выполнения.

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

2. Пересмотр пулов потоков

На следующей диаграмме показано, как служба исполнителя работает внутри:

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

1. Введение

«Должен ли я реализовать Runnable или расширить класс Thread »? довольно распространенный вопрос.

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

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

Давайте сначала определим класс SimpleThread , который расширяет Thread :

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

1. Обзор

В этом кратком руководстве мы рассмотрим основы семафоров и мьютексов в Java.

2. Семафор

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

В следующем примере мы реализуем простую очередь входа, чтобы ограничить количество пользователей в системе:

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

1. Обзор

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

Многие из нас, возможно, страдали от проблем с потокобезопасностью. Итак, вопрос «Является ли этот класс потокобезопасным?» часто приходит на ум.

Приложение Java довольно часто обращается к реляционным базам данных через JDBC, а также использует многопоточность. В этом кратком руководстве мы обсудим, является ли java.sql.Connection потокобезопасным.

2. Интерфейс java.sql.Connection

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

1. Введение

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

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

Чтобы узнать больше о деталях потоков, обязательно прочитайте наш учебник о жизненном цикле потока в Java.

2. Основы запуска потока

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

1. Обзор

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

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

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

2. Понимание требования