1. 程式人生 > >簡述synchronized和java.util.concurrent.locks.Lock異同

簡述synchronized和java.util.concurrent.locks.Lock異同

pda 阻塞 例如 好的 nbsp 釋放 非阻塞 ant 方法

主要相同點:Lock能完成synchronized所實現的所有功能。
主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。syncronized會自動釋放鎖,而Lock一定要程序員手動釋放,並且必須在finally從句中釋放。Lock還有更強大的功能,例如它的tryLock()方法可以以非阻塞方式去拿鎖

synchronized (lockObject) {   
  // update object state  
}   
Lock lock = new ReentrantLock();  //java.util.concurrent.locks.ReentrantLock為Lock的實現類
lock.lock(); try { // update object state } finally {   lock.unlock(); }

簡述synchronized和java.util.concurrent.locks.Lock異同