阅读 JDK 源码:线程池 ThreadPoolExecutor

2021-05-16
阅读 33 分钟
2.9k
上一篇文章介绍了 Thread 类,可知线程随着任务的执行结束而被销毁。但是,由于线程的创建与销毁操作涉及到系统调用,开销较大,因此需要将线程的生命周期与任务进行解耦。使用线程池来管理线程,可以有效地重复利用线程来执行任务。本文将介绍线程池最基础的实现类 ThreadPoolExecutor。

阅读 JDK 源码:线程类 Thread

2021-05-14
阅读 24 分钟
2.3k
在 Java 中,使用 Thread 类可以在操作系统层面创建线程,并绑定到对应的 Thread 类实例中。利用线程异步地执行任务,是并发编程的基础。本文通过阅读 Thread 源码,了解线程状态的定义,线程调度的相关方法,以及对线程中断的处理等。

阅读 JDK 源码:异步任务 FutureTask

2021-05-03
阅读 19 分钟
7.5k
在 Java 中,Runnable 接口表示一个没有返回结果的任务,而 Callable 接口表示具有返回结果的任务。在并发编程中,异步执行任务,再获取任务结果,可以提高系统的吞吐量。Future 接口应运而生,它表示异步任务的执行结果,并提供了检查任务是否执行完、取消任务、获取任务执行结果等功能。FutureTask 是 Future 接口的基...

阅读 JDK 源码:读写锁 ReentrantReadWriteLock

2021-05-01
阅读 27 分钟
1.4k
ReentrantReadWriteLock 中定义了两个锁:共享锁 readLock 和独占锁 writeLock。共享锁 readLock 用于读操作,能同时被多个线程获取;独占锁 writeLock 用于写入操作,只能被一个线程持有。读锁、写锁均具有公平模式、非公平模式两种获取锁的方式。

阅读 JDK 源码:可重入锁 ReentrantLock

2021-04-28
阅读 14 分钟
1.2k
前几篇文章介绍了 AQS(AbstractQueuedSynchronizer)中的独占模式和对 Condition 的实现,这一篇文章来聊聊基于 AQS 框架实现的锁工具:ReentrantLock。

阅读 JDK 源码:AQS 对 Condition 的实现

2021-04-25
阅读 18 分钟
1.2k
前两篇文章分别介绍了 AQS 框架中的独占模式和共享模式,本篇将介绍 AQS 对 Condition 接口的实现。在阅读本篇之前,建议先了解 AQS 中的数据结构和独占模式的实现原理。

阅读 JDK 源码:AQS 中的共享模式

2021-04-25
阅读 5 分钟
2.1k
AbstractQueuedSynchronizer,简称 AQS,是一个用于构建锁和同步器的框架。上一篇文章 介绍了 AQS 的数据结构和独占模式的实现原理,本篇介绍 AQS 共享模式的实现原理。

阅读 JDK 源码:AQS 中的独占模式

2021-04-25
阅读 17 分钟
1.3k
AbstractQueuedSynchronizer,简称 AQS,是一个用于构建锁和同步器的框架。JUC 包下常见的锁工具如 ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch 都是基于 AQS 实现的。本文将介绍 AQS 的数据结构及独占模式的实现原理。