并发编程

CountDownLatch 源码分析

作者 Siran | 4600字 | 阅读大约需要10分钟 | 归档于并发编程

2020年2月5日

CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。

继续阅读

ReentrantReadWriteLock 源码分析

作者 Siran | 3100字 | 阅读大约需要7分钟 | 归档于并发编程

2020年2月5日

ReentrantReadWriteLock 是什么?

继续阅读

CyclicBarrier 源码分析

作者 Siran | 2500字 | 阅读大约需要5分钟 | 归档于并发编程

2020年2月4日

CyclicBarrier(回声栅栏)根据Javadoc描述,它会阻塞一组线程直到这些线程同时达到某个条件才继续执行。它就像一个栅栏一样,当一组线程都到达了栅栏处才继续往下走。

继续阅读

ThreadPoolExecutor 源码分析

作者 Siran | 10500字 | 阅读大约需要21分钟 | 归档于并发编程

2020年1月18日

ThreadPoolExecutor中常用参数有哪些,作用是什么?任务提交后,ThreadPoolExecutor会按照什么策略去创建线程用于执行提交任务?

继续阅读

ReentrantLock 源码分析

作者 Siran | 6900字 | 阅读大约需要14分钟 | 归档于并发编程

2020年1月5日

通常使用锁就是 synchronized,经过 jdk 的一系列优化引入偏向锁、轻量级锁、重量级锁等概念,性能也是有很大的提高。

继续阅读

ScheduledThreadPoolExecutor 源码分析

作者 Siran | 5300字 | 阅读大约需要11分钟 | 归档于并发编程

2020年1月5日

ScheduledThreadPoolExecutor 定义了一个延迟队列 DelayedWorkQueue,这个队列是基于二叉堆来实现的,每次都会把最快要执行的任务放入堆顶(最小堆)。

继续阅读

Semaphore 源码分析

作者 Siran | 2400字 | 阅读大约需要5分钟 | 归档于并发编程

2018年6月5日

基于微服务的架构是未来的趋势,但是实现这种架构会面临许多困难。现代应用架构远比过去的架构复杂,因此实现微服务架构将会带来了一系列特殊的挑战,而服务网格可以帮我们解决很多问题。

继续阅读