ReentrantLock笔记

简介

ReentrantLock:可重入锁。

该锁支持一个线程对资源的重复加锁。另外,在获取锁时支持公平和非公平的选择。

·公平锁:根据当前线程的等待时间分配锁,即FIFO的方式,不会出现某个线程等待时间过长的情况,减少”饥饿“发生的概率,但是依赖操作系统,所以吞吐量不如非公平锁。

·非公平锁:可能出现”饥饿“现象,是无序的锁竞争,刚释放锁的线程很大程度上能比较快的获取到锁,所以效率比较高。

和synchronized关键字不同,synchronized关键字隐式地支持重进入。其中,

特性             synchronized              Lock

锁获取超时     不支持                  支持

获取锁响应中断    不支持            支持

主要方法

·构造方法

支持实现fair-公平锁/非公平锁

·public boolean tryLock()  

获取锁,通过compareAndSetState方法实现。

/**

    * Atomically update Java variable to x if it is currently

    * holding expected.

    * @return true if successful

    */

    public final native boolean compareAndSwapInt(Object o, long offset, int expected, int x);

以CAS的方式将制定字段设置为指定的值。

·public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException

可中断的支持再一个时间段内获取该锁。

·Protected Thread getOwner();

该方法声明为Protected,只有子类继承自ReentrantLock类,并override该方法才能使用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 困在这个城市的人,怀念你。 安若记得,十天前,十五天前,十八天前,租车,大巴,朋友跨越城市的接送,为了,不过是在那...
    林安若阅读 487评论 0 0
  • 问员工的培养机制,如果没有人带的话,多数同学会提升很慢的,自学能力超群的除外。 问员工激励制度,回答都是鸡汤的话,...
    熊猫大长腿阅读 377评论 0 0