Java—并发编程(七)JUC集合 – (4) ConcurrentHashMap
ConcurrentHashMap介绍 ConcurrentHashMap是线程安全的哈希表。HashMap, Hashtable, ConcurrentHashMap之间的关联如下: Ha…
Java—并发编程(七)JUC集合 – (3) CopyOnWriteArraySet
CopyOnWriteArraySet介绍 它是线程安全的无序的集合,可以将它理解成线程安全的HashSet。有意思的是,CopyOnWriteArraySet和HashSet虽然都继承于共同的父类A…
Java—并发编程(七)JUC集合 – (2) CopyOnWriteArrayList
CopyOnWriteArrayList介绍 它相当于线程安全的ArrayList。和ArrayList一样,它是个可变数组;但是和ArrayList不同的时,它具有以下特性: 1. 它最适合于具有以…
Java—并发编程(七)JUC集合 – 概览
Java集合包 在之前中,介绍java集合的架构。主体内容包括Collection集合和Map类;而Collection集合又可以划分为List(队列)和Set(集合)。 1. List的实现类主要有…
Java—并发编程(六)JUC锁 – (12) Phaser
java多线程技术提供了Phaser工具类,Phaser表示“阶段器”,用来解决控制多个线程分阶段共同完成任务的情景问题。其作用相比CountDownLatch和CyclicBarrier更加灵活。 …
Java—并发编程(六)JUC锁 – (11) Exchanger
Exchanger的使用 Exchanger是一个用于线程间数据交换的工具类,它提供一个公共点,在这个公共点,两个线程可以交换彼此的数据。 当一个线程调用exchange方法后将进入等待状态,直到另外…
Java—并发编程(六)JUC锁 – (10) Semaphore
Semaphore简介 Semaphore是一个计数信号量,它的本质是一个"共享锁"。 信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线…
Java—并发编程(六)JUC锁 – (9) CyclicBarrier
CyclicBarrier简介 CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等…
Java—并发编程(六)JUC锁 – (8) CountDownLatch
我们对CountDownLatch进行学习。和ReadWriteLock.ReadLock一样,CountDownLatch的本质也是一个"共享锁"。 CountDownLatch简介 CountDo…
Java—并发编程(六)JUC锁 – (7)共享锁和ReentrantReadWriteLock
Java的JUC(java.util.concurrent)包中的锁包括"独占锁"和"共享锁",对Java的独占锁进行了说明。这里对Java的“共享锁”进行介绍,JUC中的共享锁有CountDownL…
Java—并发编程(六)JUC锁 – (6)LockSupport
LockSupport LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且par…
Java—并发编程(六)JUC锁 – (5)Condition条件
Condition Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法 Condition中的signal()方法相当于Obj…
Java—并发编程(六)JUC锁 – (4)非公平锁
非公平锁 非公平锁和公平锁在获取锁的方法上,流程是一样的; 它们的区别主要表现在“尝试获取锁的机制不同”。 简单点说,“公平锁”在每次尝试获取锁时,都是采用公平策略(根据等待队列依次排序等待);而“非…
Java—并发编程(六)JUC锁 – (3)公平锁
我们会讲解“线程获取公平锁”的原理;在讲解之前,需要了解几个基本概念。后面的内容,都是基于这些概念的;这些概念可能比较枯燥,但从这些概念中,能窥见“java锁”的一些架构,这对我们了解锁是有帮助的。1…
Java—并发编程—自旋锁、排队自旋锁、MCS锁、CLH锁
自旋锁(SPIN LOCK) 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。 自旋锁适用于锁保护的临界区很小的情况,临界区很…
Java—并发编程—重入锁
ReentrantLock重入锁 ReentrantLock 是一个可重入的互斥(/独占)锁,又称为“独占锁”。 ReentrantLock通过自定义队列同步器(AQS-AbstractQueuedS…