• synchoronized和lock区别


    synchoronized是JVM的内置锁,而lock是Java代码实现的。lock是sync对的扩展,完全可以替代后者。lock可以重入,允许同一个线程连续多次获得同一把锁。其次,lock独有的功能有:

    1、可以响应中断,sync要么获得锁执行,要么保持等待。而重入锁可以响应中断,使得线程在迟迟得不到锁的情况下,不用再等待。主要由lockInterruptibly()实现,这是一个可以对中断进行响应的锁申请动作,锁中断可以避免死锁。

    2、锁的申请可以有等待时限,用tryLock()可以实现限时等待,如果超时还未获得锁会返回false,也防止线程迟迟得不到锁时一直等待,可以避免死锁。

    3、公平锁,即锁的获得按照线程先来后到的顺序依次获得,不会产生饥饿现象。sync的锁默认不公平,可通过传入构造方法的参数实现公平锁。

    4、重入锁可以绑定多个Condition条件,这些Condition通过调用await/singal实现线程间通信。

  • 相关阅读:
    poj 1611 The Suspects
    POJ 2236 Wireless Network
    POJ 1703 Find them, Catch them
    poj 1733 Parity game
    hdu 1598 find the most comfortable road
    cmake的使用二:链接第三方静态库
    线段树基础
    迪杰斯特拉算法
    Floyd详解
    STL中的set使用方法详细
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10662829.html
Copyright © 2020-2023  润新知