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


    实现方式

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

    公平

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

    释放

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

    等待中断

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

    条件变量  

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

    什么时候选择用ReetrantLock代替Synchronized

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

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

  • 相关阅读:
    105.UDP通信实现广播
    104.tcp多线程读写实现群聊
    103.tcp通信实现远程控制
    102.tcp实现多线程连接与群聊
    101.自动注入
    100.dll调用
    99.遍历进程并直接写入内存
    98.TCP通信传输文件
    97.TCP通信
    96.udp通信
  • 原文地址:https://www.cnblogs.com/fhhk/p/7403307.html
Copyright © 2020-2023  润新知