java并发
文章平均质量分 86
那个天真的人
java web前后端开发
展开
-
轻松学习java可重入锁(ReentrantLock)的实现原理
前言相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么实现的。如果真是这样,而且你有兴趣了解,今天我将带领你轻松的学习下java中非常重要,也非常基础的可重入锁-ReentrantLock的实现机制。原创 2016-08-28 14:17:46 · 86380 阅读 · 65 评论 -
java共享锁实现原理及CountDownLatch解析
前言前面介绍了ReentrantLock,又叫排他锁,本篇主要通过CountDownLatch的学习来了解java并发包中是如何实现共享锁的。原创 2016-08-28 23:44:00 · 30354 阅读 · 8 评论 -
java并发等待条件的实现原理(Condition)
前面介绍了排它锁,共享锁的实现机制,本篇继续学习AQS中的另外一个内容-Condition。本篇从一个生产-消费例子出发,进而揭示借用AQS,是如何实现并发等待条件的。原创 2016-09-11 11:13:43 · 4542 阅读 · 6 评论 -
轻松掌握java读写锁(ReentrantReadWriteLock)的实现原理
前言前面介绍了java中排它锁,共享锁的底层实现机制,本篇再进一步,学习非常有用的读写锁。鉴于读写锁比其他的锁要复杂,不想堆一大波的文字,本篇会试图图解式说明,把读写锁的机制用另外一种方式阐述。原创 2016-09-04 22:08:32 · 38351 阅读 · 34 评论 -
聊聊cpu内存一致性
作为一名java攻城狮,想要深入了解java这门语言,免不了跟多线程打交道,继而会跟java内存模型打交道。内存模型是一个比较难以理解的东西,而这一切都缘于更加底层的硬件,cpu工作方式的复杂度引起的。本文试图举例说明cpu在多线程下工作的不确定性因素,以及cpu为此提供了什么利器来解决这个问题,这也是跟java中多线程可见性息息相关的。原创 2016-08-26 00:19:26 · 3734 阅读 · 3 评论 -
java线程池系列(1)-ThreadPoolExecutor实现原理
前言做java开发的,一般都避免不了要面对java线程池技术,像tomcat之类的容器天然就支持多线程。即使是做偏后端技术,如处理一些消息,执行一些计算任务,也经常需要用到线程池技术。鉴于线程池技术的重要性,接下来会分多篇介绍java中提供的ThreadPoolExecutor线程池实现的底层机制。原创 2016-10-01 20:18:50 · 1824 阅读 · 0 评论 -
java线程池系列(2)-FutureTask实现原理
线程池可以并发执行多个任务,有些时候,我们可能想要跟踪任务的执行结果,甚至在一定时间内,如果任务没有执行完成,我们可能还想要取消任务的执行,为了支持这一特性,ThreadPoolExecutor提供了 FutureTask 用于追踪任务的执行和取消。原创 2016-10-03 15:42:03 · 1461 阅读 · 0 评论 -
java线程池系列(3)-ScheduledThreadPoolExecutor
前言定时执行任务是非常常见的需求,比如我们通常会使用spring或者quartz来实现定时任务,JDK本身也提供了多线程并发执行定时任务的框架,即ScheduledThreadPoolExecutor,它是基于优先级队列和ThreadPoolExecutor线程池技术来实现的,本篇介绍其实现的原理。原创 2016-10-07 22:42:06 · 1083 阅读 · 0 评论 -
java并发之SynchronousQueue实现原理
前言SynchronousQueue是一个比较特别的队列,由于在线程池方面有所应用,为了更好的理解线程池的实现原理,笔者花了些时间学习了一下该队列源码(JDK1.8),此队列源码中充斥着大量的CAS语句,理解起来是有些难度的,为了方便日后回顾,本篇文章会以简洁的图形化方式展示该队列底层的实现原理。SynchronousQueue简单使用经典的生产者-消费者模式,操作流程是这样的:有多个生产者,可以并原创 2016-09-17 10:54:59 · 63160 阅读 · 29 评论