logo头像

生而无畏,战至终章

CountDownLatch介绍

简介CountDownLatch是一个同步工具类,在完成一组正在其他线程中执行的操作之前,它允许一个或者多个线程一直等待。 与CyclicBarrier区别: CountDownLatch允许一个或者N个线程等待其他线程完成执行;而...

CyclicBarrier简介

简介CyclicBarrier也是java并发包中的一个工具类,也被称为同步屏障,作用是可以让一组线程达到一个屏障时阻塞,直到最后一个线程到达屏障时,所有被阻塞的线程才能继续执行。示意图如下: 下面将从源码的角度来看看CyclicB...

ThreadLocal解析

ThreadLocal理解网上有很多常见对于ThreadLocal的介绍,大概如下: ThreadLocal为解决多线程程序的并发问题提供了一种新的思路ThreadLocal的目的是为了解决多线程访问资源时的共享问题 既然Thre...

ReentrantReadWriteLock详解

ReentrantReadWriteLock介绍在大多数场景下都是读服务多点,写服务相对来说少点,而且读服务不存在竞争的情况,java提供了另外一个接口,就是今天的要说的ReentrantReadWriteLock(读写锁)读写锁允许...

ReentrantLock详解

ReentrantLock介绍 ReentrantLock可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了碧synchronized更强大,更灵活的锁机制,可以减少...

CAS详解

CAS,Compare And Swap,即比较并交换。Doug lea大神在同步组件中大量使用CAS技术鬼斧神工地实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是以CAS实现的,甚至Concurre...

AbstractQueuedSynchronizer详解

AQS简介AbstractQueuedSynchronizer简称AQS,即抽象的队列同步器,它是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),J...

Semaphore信号量

信号量Semaphore是一个控制访问多个共享资源的计数器,和CountDownLatch一样,其本质上是一个“共享锁”。 Semaphore介绍Semaphore在API是这么介绍的: 一个计数信号量。从概念上讲,信号量维护了一个...

volatile关键字

在java语言规范中对volatile的定义如下: Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。 简单点来说就是一个变量如果用volatile修饰了,...

synchronized原理

在遇到多线程情况下使用最多的synchronized,但它是一个重量级的锁,相对于Lock,它会显得有点笨重,但是自从JDK1.6开始已经对synchronized进行了各种优化,并没有之前版本那么重,下面来看看synchronize...