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

· 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. Понимание требования

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

1. Обзор

Этот краткий учебник будет введением в использование блока synchronized в Java.

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

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

2. Почему синхронизация?

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

1. Обзор

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

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

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

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

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

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

1. Обзор

В этом руководстве мы обсудим различия между Collections.synchronizedMap() и ConcurrentHashMap .

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

2. Различия

Collections.synchronizedMap() и ConcurrentHashMap обеспечивают потокобезопасные операции с коллекциями данных.

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

1. Введение

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

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

2. Параллельное программирование

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

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

1. Обзор

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

Во-первых, мы кратко представим концепцию публикации в Java и JVM. Затем мы увидим, как эта концепция влияет на то, как мы запускаем потоки.

2. Публикация и побег

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