title: Lock free synchronization
body: <p>My question is related to multithreading lock-free synchronization. I wanted to know the following:</p>
  
  <ol>
  <li><p>What are general approaches to achieve this? I read somewhere about LockFreePrimitives like CompareAndExchange (CAS) or DoubleCompareAndExchange (DCA) but no explanation for those were given? Any approaches to MINIMIZE use of locks?</p></li>
  <li><p>How does Java/.NET achieve their concurrent containers? Do they use locks or lock-free synch?</p></li>
  </ol>
  
  <p>Thanks in advance.</p>