前言在上篇文章Java并发编程之锁机制之Lock接口(七)中,我们已经了解了,Java下整个Lock接口下实现的锁机制是通过AQS(这里我们将AbstractQueuedSynchronizer 或AbstractQueuedLongSynchronizer统称为AQS)与Condition来实现 ...
Java并发编程之锁机制之Lock接口(七)
前言在上篇文章Java并发编程之锁机制之引导篇(六)中,我们大致了解了Lock接口(以及相关实现类)在并发编程重要作用。接下来我们就来具体了解Lock接口中声明的方法以及使用优势。 Lock简介Lock 接口实现类提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允 ...
Java并发编程之锁机制之引导篇(六)
前言在前面的文章中。我们了解了volatile、了解了synchronized。现在我们来了解一下Java SE 5之后新增加的Lock接口(以及相关实现类)实现的锁功能。在阅读该系列文章之前,希望你已经掌握了volatile原理及CAS操作原理。如果你对上述提到的两个知识点不是很熟悉或者了解。那 ...
Java并发编程之原子类(五)
前言在上篇文章Java并发编程之Synchronized(三)中,曾描述Java提供了两种方式来处理线程安全的问题。第一种是互斥同步(悲观锁),第二种是采用非阻塞式同步(乐观锁)。虽然以上两种方案都能解决线程安全的问题。但是在JDK1.5开始,就提供了java.util.concurrent.at ...
Java并发编程之Synchronized(三)
前言上篇文章我们讲了volatile关键字,我们大致了解了其为轻量级的同步机制,现在我们来讲讲我们关于同步的另一个兄弟synchronized。synchronized作为开发中常用的同步机制,也是我们处理线程安全的常用方法。相信大家对其都比较熟悉。但是对于其内部原理与底层代码实现大家有可能不是很 ...
Java并发编程之Volatile(二)
前言在前面的文章Java并发编程之Java内存模型(一)中,我们已经了解了Java的内存模型,了解了其可见性问题及指令重排序及Happen-Before原则,现在我们来了解一下关键字volatile。在Java中volatile可以算是Java提供的轻量级同步实现机制,但是在平时开发中,我们更多的 ...
Java并发编程之Java的CAS操作(四)
前言在上一篇文章中Java并发编程之Java内存模型(一)我们描述过,物理机计算机的数据缓存不一致的时候,我们一般采用两种方式来处理。一,通过总线加锁的形式,二,通过缓存一致性协议来操作。而体现缓存一致性的正是CAS操作,CAS操作在整个Java并发框架中起着非常重要的作用。如果大家能把CAS的由 ...
Java并发编程之Java内存模型(一)
一、并发的起源为了提高计算机处理数据的速度。现代的计算机都支持多任务处理。在32位windows操作系统中 ,多任务处理是指系统可同时运行多个进程,而每个进程也可同时执行多个线程。一个线程是指程序的一条执行路径,它在系统指定的时间片中完成特定的功能。系统不停地在多个线程之间切换,由于时间很短,看上 ...
Java并发编程之锁机制之(ReentrantLock)重入锁(十一)
最近在忙公司的项目,现在终于有时间来写博客啦~开心开心 前言通过前面的文章,我们已经了解了AQS(AbstractQueuedSynchronizer)内部的实现与基本原理。现在我们来了解一下,Java中为我们提供的Lock机制下的锁实现–ReentrantLock(重入锁),阅读该篇文章之前 ...
Java并发编程之锁机制之ReentrantReadWriteLock(读写锁)(十二)
前言在前面的文章中,我们讲到了ReentrantLock(重入锁),接下来我们讲ReentrantReadWriteLock(读写锁),该锁具备重入锁的可重入性、可中断获取锁等特征,但是与ReentrantLock不一样的是,在ReentrantReadWriteLock中,维护了一对锁,一个读锁 ...