• 一步一步学多线程-Synchronized和ReetrantLock区别


    实现方式

             Lock是代码级别的,synchronized是JVM级别的

    公平

             Lock可以是公平所,也可以是不公平锁,默认是非公平锁,synchronized是非公平锁

    释放

             Lock的释放必须手动调用unlock()方法,而synchronized在代码出了代码块或方法之后就会自动释放锁。

    等待中断

             Lock中如果持有锁的线程长期不释放的时候,正在等待的线程可以选择放弃等待,但是synchroinzed不会

    条件变量  

             Lock中可以有多个Condition来实现线程间通信,而synchronized是能通过当前锁来进行线程通信。

    什么时候选择用ReetrantLock代替Synchronized

    1、    在确实需要一些synchronized锁没有的特性的时候,比如时间锁等候、可中断锁等候、无块结构锁、多个条件变量或者锁投票的时候

    2、    优先推荐synchronized开发,如果事实证明synchronized确实不合适,再用ReetrantLock开发。

  • 相关阅读:
    心情记录&考试总结 3.30
    BZOJ 1982 Moving Pebbles
    BZOJ 3759 Hungergame
    51Nod 算法马拉松12 Rikka with sequences
    51Nod 算法马拉松12 移数博弈
    BZOJ 3720 gty的妹子树
    BZOJ 4184 shallot
    BZOJ 3160 万径人踪灭
    好好学习天天向上
    java解析json字符串
  • 原文地址:https://www.cnblogs.com/fhhk/p/7403307.html
Copyright © 2020-2023  润新知