Обновление двух потоков в CopyOnWriteArrayList - PullRequest
0 голосов
/ 24 января 2019

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

1 Ответ

0 голосов
/ 24 января 2019

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

Что, если два потока получат блокировку одновременно.

Два потока могут попытка одновременно получить блокировку.Однако только один поток сразу получит блокировку.Другой будет заблокирован.Это фундаментальный инвариант блокировок.Последовательности команд, используемые для получения и снятия блокировок ... и, в конечном счете, аппаратное обеспечение ЦП гарантирует , что инвариант не нарушен.

...