In method acquire, node.prev is updated by node.setPrevRelaxed(t).
It actually calls unsafe.putReference which does not ensure the visibility.
final void setPrevRelaxed(Node p) { // for off-queue assignment
U.putReference(this, PREV, p);
}
How dose it ensure the visibility of node.prev?