zoukankan      html  css  js  c++  java
  • 多线程001synchronized和lock有哪些区别

    1.来源:

    lock是一个接口(interface)。

    synchronized是java的一个关键字,它由内置的语言实现。

    2.异常是否释放锁:

    lock发生异常时不会主动释放锁,必须手动unlock来释放,可能引起死锁。

    synchronized发生异常时会自动释放锁,不会引起死锁。

    3.是否响应中断:

    lock等待锁的过程可以用interrupt来中断等待。

    synchronized只能等待锁的释放,不能响应中断。

    4.是否知道获取锁:

    lock可以通过trylock来判断是否已经获取锁。

    synchronized不能判断是否已经获取锁。

    5.其他特点:

    lock有读写锁,使用读锁可以提供高多个线程进行读操作的效率。

    当资源的竞争很激烈时,lock的性能比synchronized要好。

    synchronized使用Object对象提供的wait()、notify()、notifyAll()等方法进行线程的通信。

    lock使用Condition对象await()、signal()等方法进行线程的通信。

  • 相关阅读:
    JSP(一)
    设计模式之UML类图
    Servle原理
    Servlet 浅谈(三)
    Servlet 浅谈(二)
    Servlet 浅谈(一)
    闲聊
    设计模式之装饰器模式
    struts2源码调试环境的搭建
    Github学习
  • 原文地址:https://www.cnblogs.com/asenyang/p/15565390.html
Copyright © 2011-2022 走看看