Skip to content

Commit d73ae9e

Browse files
authored
Add info to synchronize answers (enhorse#160)
1 parent d4e407b commit d73ae9e

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

concurrency.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,8 @@ __Куча__ – общий участок памяти, который дели
558558

559559
## Как поделиться данными между двумя потоками?
560560
Данными между потоками возможно делиться, используя общий объект или параллельные структуры данных, например `BlockingQueue`.
561+
Класс синхронизатор `Exchanger` предназначен для обмена данными между потоками. Он параметризуется типом данных, которыми потоки должны обмениваться.
562+
Обмен данными производится с помощью единственного метода этого класса exchange(). Для работы нужно передать в конструкторы thread-ов экземпляр класса Exchanger и обращаться к нему в методе run(). Этот метод блокирует поток до того момента, пока другой поток не передаст в Exchanger свои данные.
561563

562564
[к оглавлению](#Многопоточность)
563565

@@ -621,7 +623,7 @@ finally {
621623
[к оглавлению](#Многопоточность)
622624

623625
## Что такое `ReadWriteLock`?
624-
`ReadWriteLock` – это интерфейс расширяющий базовый интерфейс `Lock`. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор, пока не появится записывающий. Блокировка записи является эксклюзивеной.
626+
`ReadWriteLock` – это интерфейс расширяющий базовый интерфейс `Lock`. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор, пока не появится записывающий. Блокировка записи является эксклюзивной.
625627

626628
Существует реализующий интерфейс `ReadWriteLock` класс `ReentrantReadWriteLock`, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.
627629

0 commit comments

Comments
 (0)