【JDK源码】同步系列AQS之Semaphore
【JDK源码】同步系列synchronized
【JDK源码】同步系列手写Lock
【JDK源码】同步系列AQS初识
【JDK源码】同步系列AQS之ReentrantLock
【JDK源码】同步系列AQS之条件锁
【JDK源码】同步系列AQS之ReentrantLock VS synchronized
【JDK源码】同步系列AQS之ReentrantReadWriteLock(万字解析)
文章目录
-
- 简介
- 特性
- 类结构
- 源码分析
-
- 内部类Sync
- 内部类NonfairSync
- 内部类FairSync
- 构造方法
- acquire()方法
- acquireUninterruptibly()方法
- tryAcquire()方法
- tryAcquire(long timeout, TimeUnit unit)方法
- release()方法
- acquire(int permits)方法
- acquireUninterruptibly(int permits)方法
- tryAcquire(int permits)方法
- tryAcquire(int permits, long timeout, TimeUnit unit)方法
- release(int permits)方法
- availablePermits()方法
- drainPermits()方法
- reducePermits(int reduction)方法
- 总结
- 问题
相关推荐
Java JUC思维导图总结1
代码下载地址: https://pan.quark.cn/s/7b3bab6b60d1 对个人在Java JUC包知识学习过程中的心得进行归纳,研读并掌握其核心内容后,可以较为熟练地处理各类常见问题,极力推荐此知识分享,相关博客内容可通过链接 https://blog.csdn.net/qq_35642036/article/details/82767070 查阅获取。
Java并发编程解析 | 解析AQS基础同步器的设计与实现
Java并发编程解析 | 解析AQS基础同步器的设计与实现
基于JDK源码解析Java领域中的并发锁之设计与实现.pdf
在Java领域中, 尤其是在并发编程领域,对于多线程并发执行一直有两大核心问题:同步和互斥。其中: - 互斥(Mutual Exclusion):一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。即就是同一时刻只允许一个线程访问共享资源的问题。 - 同步(Synchronization):两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。即就是线程之间如何通信、协作的问题。 针对对于这两大核心问题,利用管程是能够解决和实现的,因此可以说,管程是并发编程的万能钥匙。 虽然,Java在基于语法层面(synchronized 关键字)实现了对管程技术,但是从使用方式和性能上来说,内置锁(synchronized 关键字)的粒度相对过大,不支持超时和中断等问题。 为了弥补这些问题,从JDK层面对其“重复造轮子”,在JDK内部对其重新设计和定义,甚至实现了新的特性。
基于JDK源码解析Java领域中的并发锁,我们需要特别关注哪些内容?
在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。 主要原因是,对于多线程实现实现并发,一直以来,多线程都存在2个问题: ● 线程之间内存共享,需要通过加锁进行控制,但是加锁会导致性能下降,同时复杂的加锁机制也会增加编程编码难度 ● 过多线程造成线程之间的上下文切换,导致效率低下 因此,在并发编程领域中,一直有一个很重要的设计原则: “ 不要通过内存共享来实现通信,而应该通过通信来实现内存共享。” 简单来说,就是尽可能通过消息通信,而不是内存共享来实现进程或者线程之间的同步。
Java并发包源码分析(JDK1.8)
Java并发包源码分析(JDK1.8):囊括了java.util.concurrent包中大部分类的源码分析,其中涉及automic包,locks包(AbstractQueuedSynchronizer、ReentrantLock、ReentrantReadWriteLock、LockSupport等),queue(ArrayBlockingQueue、ConcurrentLinkedDeque、DelayQueue、LinkedBlockingQueue等) , AQS相关应用(CountDownLatch、CyclicBarrier、Semaphore等),executor(ThreadPoolExecutor、ScheduledThreadPoolExecutor、FutureTask等),collection(ConcurrentHashMap、CopyOnWriteArrayList等), 对每个类的核心源码进行详细分析,笔记详细,由浅入深,层层深入,带您剖析并发编程原理


