Неблокирующие структуры данных в Java могут быть реализованы с использованием атомарных операций и циклов CAS (Compare-and-Swap). Вот пример минимальной реализации неблокирующего стека с методами push() и pop(): import java.util.concurrent.atomic.AtomicReference;
public class NonBlockingStack<T> {
private static class Node<T> {
final T value;
Node<T> next;
Node(T value) {
this.value = value;
}
}
private final AtomicReference<Node<T>> top...
Параллельные структуры Данных на основе блокировок Прежде чем оставить тему блокировок, мы сначала опишем, как использовать блокировки в некоторых распространенных структурах данных. Добавление блокировок в структуру данных, чтобы сделать ее пригодной для использования потоками, делает структуру потокобезопасной (threadsafe). Конечно, то, как именно добавляются такие блокировки, определяет как правильность, так и производительность структуры данных. И, таким образом, наша задача: ЗАДАЧА: КАК ДОБАВИТЬ...