美文网首页
synchronized和reentrantlock 的区别

synchronized和reentrantlock 的区别

作者: 乐百事52淑熙 | 来源:发表于2018-05-10 20:57 被阅读0次

    功能区别:

    便利性:很明显Synchronized的使用比较方便简洁,并且由编译器去保证锁的加锁和释放,而ReenTrantLock需要手工声明来加锁和释放锁,为了避免忘记手工释放锁造成死锁,所以最好在finally中声明释放锁。

    锁的细粒度和灵活度:很明显ReenTrantLock优于Synchronized

    ReenTrantLock独有的能力:

    1.      ReenTrantLock可以指定是公平锁还是非公平锁。而synchronized只能是非公平锁。所谓的公平锁就是先等待的线程先获得锁。

    2.      ReenTrantLock提供了一个Condition(条件)类,用来实现分组唤醒需要唤醒的线程们,而不是像synchronized要么随机唤醒一个线程要么唤醒全部线程。

    3.      ReenTrantLock提供了一种能够中断等待锁的线程的机制,通过lock.lockInterruptibly()来实现这个机制。

    个人公号:【排骨肉段】,可以关注一下。

    相关文章

      网友评论

          本文标题:synchronized和reentrantlock 的区别

          本文链接:https://www.haomeiwen.com/subject/eceylftx.html