一、CountDownLatch 场景:主线程需要等待所有子线程执行完毕后再进行汇总 CountDownLatch实现比较简单,继承AQS实现了一个不可重入共享锁Sync 1.不可重入共享锁Sync private static final class Sync extends AbstractQu ...
分类:
编程语言 时间:
2020-02-06 14:54:31
阅读次数:
89
4、显式锁和AQS 显式锁 Lock接口和核心方法 package com.xiangxue.ch4; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @au ...
分类:
其他好文 时间:
2020-02-01 14:48:15
阅读次数:
89
CountDownLatch 基于AQS实现的同步器,允许一个或者多个线程通过 方法进入阻塞等待,直到一个或者多个线程执行 完成。 在创建时需要传入一个 值,一旦某个或者多个线程调用了 方法,那么需要等待 值减为0,才能继续执行。 方法每执行一次,count(state)值减1,直到减为0。一个线程 ...
分类:
其他好文 时间:
2020-02-01 12:17:53
阅读次数:
67
Unsafe 类是JDK底层类库提供的、基于Java内存模型访问底层的机制,通过该类可以实例化对象、直接操作堆外内存(直接内存)、CAS原子操作等。Java基于AQS实现的同步工具类、并发容器,Netty对堆外内存的操作都基于该类实现。 获取Unsafe实例 中提供了静态方法 可以直接获取到 对象, ...
分类:
其他好文 时间:
2020-01-29 19:51:07
阅读次数:
92
浅析JDK1.8 ReentrantLock源码。 写在开篇 ReentrantLock–重入锁,是实现Lock接口的一个同步组件。这篇文章建立在熟悉AQS源码的基础上,同时主要从两个方面来分析ReentrantLock: 重入性的实现原理 公平锁和非公平锁 类的继承关系 ReentrantLock ...
分类:
其他好文 时间:
2020-01-23 21:13:45
阅读次数:
74
两个锁都是依赖AQS实现的,方法基本是Sync的封装,主要看Sync的设计实现, 一、可重入独占锁ReentrantLock 1.静态内部抽象类Sync //继承AQS abstract static class Sync extends AbstractQueuedSynchronizer { p ...
分类:
其他好文 时间:
2020-01-22 18:18:05
阅读次数:
111
什么是AQS? AQS即 ,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。 AQS支持独占锁(exclusive)和共享锁(share)两种模式。 ...
分类:
其他好文 时间:
2020-01-17 17:31:47
阅读次数:
114
锁的粗化和锁的消除 这个本来应该是在synchronized里面去说的,忘记了,不是很重要,但是需要知道有这么一个东西啦。 我们先来演示一下锁的粗化: StringBuffer sb = new StringBuffer(); public void lockCoarseningMethod(){ ...
分类:
编程语言 时间:
2020-01-16 10:23:18
阅读次数:
75
1. 基础知识:HashMap,ConcurrentHashMap,锁(Synchronized,ReentrantLock,自旋锁),AQS,线程池,volatile,异常处理,Error和Exception,CountDownLatch和CyclicBarrier 2. 并发知识:高并发怎么办, ...
分类:
其他好文 时间:
2020-01-14 20:17:27
阅读次数:
75
1 AQS 简单介绍 AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。 AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 Reentran ...
分类:
其他好文 时间:
2020-01-10 12:16:55
阅读次数:
111