Код: Выделить всё
private static class Node {
private final AtomicReference value;
private final AtomicReference next;
private Node(T value, Node next) {
this.value = new AtomicReference(value);
this.next = new AtomicReference(next);
}
private Node(T value) {
this(value, null);
}
private Node() {
this(null, null);
}
}
Код: Выделить всё
public class ConcurrentLinkedQueue implements Queue {
private AtomicReference head;
private AtomicReference tail;
public ConcurrentLinkedQueue() {
Node initial = new Node();
head = new AtomicReference(initial);
tail = new AtomicReference(initial);
}
@Override
public void enqueu(T t) {
while(true) {
Node currentHead = head.get(); //
Подробнее здесь: [url]https://stackoverflow.com/questions/79461729/michael-scott-lock-free-queue-is-it-possible-to-relax-sequential-consistency[/url]