Это может быть полезно, если у вас есть большое количество объектов, которые обновляются одновременно, например, в большой многопользовательской игре.
Обновление ссылки i
будет следовать шаблону
boolean success = false;
while (!success)
{
E previous = atomicReferenceArray.get(i);
E next = ... // compute updated object
success = atomicReferenceArray.compareAndSet(i, previous, next);
}
В зависимости от обстоятельств это может быть быстрее и / или проще в использовании, чем блокировка (synchronized
).