文章 > Java > Java中Lock原理探究以及调用过程

Java中Lock原理探究以及调用过程

java Lock原理

2021-02-08 17:28:374059采风 · 0收藏 · 0评论

在对此lock锁的使用上,成百上千人只是时有所闻了最基础的方法。但是对实现的过程不是很清楚。这里我们对lock锁功能的实现进行分析,以ReentrantLock为例,分析它的锁类型,并对相关的调用方法进行展示。下面我们就一起看看Java中Lock原理过程的一些具体操作,情节一起往下看。

1.ReentrantLock的调用过程

 /**
     * Creates an instance of {@code ReentrantLock}.
     * This is equivalent to using {@code ReentrantLock(false)}.
     */
    public ReentrantLock() {
        sync = new NonfairSync();
    }

经过观察ReentrantLock把所有Lock接口的操作都委派到一个Sync类上,此类继承了AbstractQueuedSynchronizer:

static abstract class Sync extends AbstractQueuedSynchronizer

Sync又有两个性感女郎子类:

final static class NonfairSync extends Sync  
 
final static class FairSync extends Sync

2.Reentrant.lock()调用默认非公平锁

非公平锁:比较粗鲁,上去就直接试行占有锁。如果试行失败。就再采用类似公平锁那种方式。

通过上面调用过程及AbstractQueuedSynchronizer的注释可以发现,AbstractQueuedSynchronizer中抽象了大部Lock的功能,而只把tryAcquire方法延迟到子类中实现。tryAcquire方法的语义在乎用具体子类判断乞求线程是否可以获得锁,随便成功与否AbstractQueuedSynchronizer都将处理后面的流程。

以上就是Java中Lock原理探究,相信各户在看完本篇文章后,对lock使用的方法有了愈发深刻的理解。贸委会后可以就一些lock使用进行试行。

随时随地在线学习

本教程部分素材缘于网络歌曲最新歌曲,版权问题联系站长!

Baidu