title: what's the difference between compareAndSet and weakCompareAndSet in AtomicReference?
body: <p>The source code is the same thing.</p>
  
  <pre><code>public final boolean compareAndSet(V expect, V update) {
      return unsafe.compareAndSwapObject(this, valueOffset, expect, update);
  }
  
  public final boolean weakCompareAndSet(V expect, V update) {
      return unsafe.compareAndSwapObject(this, valueOffset, expect, update);
  }
  </code></pre>
  
  <p>What's the point?</p>