你的位置:首页 > Java教程

[Java教程]手写总结:synchronized 和 lock 区别


    1.  synchronized 是jvm 层次的(可以会造成死锁), lock 可以写代码控制,一般在异常时在 finally 里可以 unlock 释放锁

    2. lock 细度更细,synchronized 一个线程锁住了,其他线程无法进入。而 lock 里的 ReadWriteLock 可以获得 读锁 和写锁。可以允许多个写锁进入,

写锁和写锁不互斥,写锁和(写锁或者读锁)互斥

    3. lock 可以用  trylock  试着获得 锁 ,如果获得返回true,接着执行,否则可以去执行其他事情,而 synchronized 则一直等待,同时tryLock 还可以设置

在某个时间段内获得锁

      if(lock.tryLock()){

       // 获得锁 ,继续执行

     } else {

      // 没获得锁 ,干其他事情

     }

   4. lock 可以new 一个 condition ,condition 相当于 wait  和 notify  的作用