Add info to synchronize answers (#160)
This commit is contained in:
parent
d4e407b0b3
commit
d73ae9ea19
|
@ -558,6 +558,8 @@ __Куча__ – общий участок памяти, который дели
|
|||
|
||||
## Как поделиться данными между двумя потоками?
|
||||
Данными между потоками возможно делиться, используя общий объект или параллельные структуры данных, например `BlockingQueue`.
|
||||
Класс синхронизатор `Exchanger` предназначен для обмена данными между потоками. Он параметризуется типом данных, которыми потоки должны обмениваться.
|
||||
Обмен данными производится с помощью единственного метода этого класса exchange(). Для работы нужно передать в конструкторы thread-ов экземпляр класса Exchanger и обращаться к нему в методе run(). Этот метод блокирует поток до того момента, пока другой поток не передаст в Exchanger свои данные.
|
||||
|
||||
[к оглавлению](#Многопоточность)
|
||||
|
||||
|
@ -621,7 +623,7 @@ finally {
|
|||
[к оглавлению](#Многопоточность)
|
||||
|
||||
## Что такое `ReadWriteLock`?
|
||||
`ReadWriteLock` – это интерфейс расширяющий базовый интерфейс `Lock`. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор, пока не появится записывающий. Блокировка записи является эксклюзивеной.
|
||||
`ReadWriteLock` – это интерфейс расширяющий базовый интерфейс `Lock`. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор, пока не появится записывающий. Блокировка записи является эксклюзивной.
|
||||
|
||||
Существует реализующий интерфейс `ReadWriteLock` класс `ReentrantReadWriteLock`, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.
|
||||
|
||||
|
|
Loading…
Reference in New Issue