Lock与synchronized 的区别

原创 2015年07月10日 17:50:13

 

1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候

     线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,

     如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断

     如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情

 

    ReentrantLock获取锁定与三种方式:
    a)  lock(), 如果获取了锁立即返回,如果别的线程持有锁,当前线程则一直处于休眠状态,直到获取锁

    b) tryLock(), 如果获取了锁立即返回true,如果别的线程正持有锁,立即返回false;

    c)tryLock(long timeout,TimeUnit unit),   如果获取了锁定立即返回true,如果别的线程正持有锁,会等待参数给定的时间,在等待的过程中,如果获取了锁定,就返回true,如果等待超时,返回false;

    d) lockInterruptibly:如果获取了锁定立即返回,如果没有获取锁定,当前线程处于休眠状态,直到或者锁定,或者当前线程被别的线程中断

 

2、synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用Lock则不行,lock是通过代码实现的,要保证锁定一定会被释放,就必须将unLock()放到finally{}中

 

3、在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,但是ReetrantLock的性能能维持常态;

详解synchronized与Lock的区别与使用

昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronized的使用...

Java中Synchronized和Lock的使用和区别

转载自:http://blog.csdn.net/imzoer/article/details/9457639  Lock的锁定是通过代码实现的,而 synchronized 是在 JVM 层面...

JUC(Lock)和Monitor Object(Synchronized)机制区别是什么

这是一道面试题 synchronized和lock的用法区别 synchronized和lock性能区别 Refer 一、synchronized和lock的用法区别 synchronized:在...

详解synchronized与Lock的区别与使用

引言: 昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronize...

详解synchronized与Lock的区别与使用

引言: 昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchroniz...

线程的同步控制synchronized和lock的对比和区别

我们在面试的时候,时常被问到如何保证线程同步已经对共享资源的多线程编程。我们当然用同步代码块,同步方法,又或者是用java提供的锁机制来达到对共享资源变量的同步控制。 那么我们什么时候用synchr...

Java中Lock和Synchronized的区别

转帖出处 http://www.cnblogs.com/dolphin0520/p/3923167.html Java并发编程:Lock...
  • wwe4023
  • wwe4023
  • 2017年04月04日 20:07
  • 494

synchronized与lock区别

synchronized 修饰方法时 表示同一个对象在不同的线程中 表现为同步队列。如果实例化不同的对象 那么synchronized就不会出现同步效果了。1、对象的锁所有对象都自动含有单一的锁。JV...

Lock与synchronized的区别

本文转自:http://wenku.baidu.com/link?url=ywb7nLusfCxIrXDW1_yCjCxeQH6MQqkI0h8_LQDizZjRAaneNOxkLOj7NdWmczJ...

synchronized和lock的区别

先说一下什么是同步(synchronized和lock都是实现这个的):           每一个对象都有一个互斥的锁标记和一个锁池,哪个线程拥有锁标记哪个才能访问,没有锁标记的线程就进入锁池,保...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lock与synchronized 的区别
举报原因:
原因补充:

(最多只允许输入30个字)