([Reentrant]ReadWriteLock), , - , .
- : - + ( "" ) + j >= i. :
- ( ), .
- , (, ), ,
int modifyingFrom, , "" ( j >= i), modifyingFrom (. docs) , . - , -, , , ,
modifyingFrom. , , , modifyingFrom, , . ( synchronized (obj) - ), obj.notify() , obj.wait() ( !).: ( boolean structuralChangeHappening = false, modifyingFrom x > <list size>, ( , i < modifyingFrom - get() update()). , , modifyingFrom , .- , , , , , . , , .
- , (... ,
trimToSize() - ), .
, , .
:
get(i) ( i, ): , i th , , .- ,
update([index =] i, element): i s, . , . t insert([index =] 5, element), get(i): t modifyingFrom = 5 , , modifyingFrom. , i < modifyingFrom, () ; , insert(5) , .add() : , , , .- 7,
t_a add(element), t_g get([index =] 7):t_a , modifyingFrom = 7, , , t_g , , index (= 7) >= modifyingFrom t_a .t_g , , 7 < modifyingFrom (modifyingFrom > <list size> (== 7), 4- ), , 7 >= <list size> ! t_a .
, modifyingFrom .
, , , , - ( ), .
, , . , , : , . , , tryUpdate(int, E), -, tryUpdate(int, E, Predicate<ArrayList>), , , ( , ).
, , - . .:)