JAVA并发编程
文章平均质量分 81
涵盖JAVA中的并发概念说明,原理刨析和实战编程。
樱花祭的约定
用最朴实的话说技术。
展开
-
三十. JAVA线程调度机制与应用
说到并发,离不开线程这个概念,在操作系统层面有线程,在JAVA进程层面也有线程。同时还知道线程既可以共享进程资源,又可以被独立调度,那么JAVA进程的线程,也肯定存在一种调度机制。本篇文章将对操作系统的线程的三种实现方式进行说明,然后再对JAVA线程的实现方式进行阐述,最后针对JAVA线程的调度机制进行解释并结合例子说明JAVA线程调度机制的应用。原创 2023-01-27 12:10:33 · 859 阅读 · 0 评论 -
二十九.线程的中断详解
JAVA中的线程,有一个状态叫做中断状态,用于标记线程是否被中断过。通过对线程中断状态的判断,可以实现一些例如优雅终止线程,唤醒线程等功能。在Thread类中有interrupt(),interrupted()和isInterrupted()方法与线程的中断有关,本篇文章将对这些方法的具体作用进行详细解释。在文章的最后,还会通过一个典型例子,演示如何通过线程的中断状态来优雅的终止线程。原创 2023-01-23 23:48:26 · 579 阅读 · 0 评论 -
二十八. Semaphore的使用详解
Semaphore在初始化时需要指定许可证数,Semaphore#acquire方法会尝试获取一定数量的许可证,若许可证数量不足,则当前线程进入阻塞状态。相应地,获取到了许可证的线程,在执行完毕后,需要调用Semaphore#release方法来归还许可证。原创 2023-01-22 20:39:09 · 1172 阅读 · 0 评论 -
二十七. 并发实战-CountDownLatch的使用
本篇文章,将对CountDownLatch的创建和使用进行说明。原创 2023-01-21 11:59:15 · 191 阅读 · 0 评论 -
二十六. 并发实战-读写锁的使用
本篇文章将对读写锁ReentrantReadWriteLock的创建,使用场景,不同加锁方式进行说明和总结。原创 2023-01-21 11:31:10 · 184 阅读 · 0 评论 -
二十五. 并发实战-构造死锁
本篇文章将对死锁的产生和死锁的构造进行说明。原创 2023-01-19 21:36:32 · 168 阅读 · 0 评论 -
二十四. 并发实战-ReentrantLock使用
本篇文章将对JUC并发包里提供的ReentrantLock的使用进行说明。原创 2023-01-19 21:09:40 · 189 阅读 · 0 评论 -
二十三. 并发实战-ScheduledThreadPoolExecutor使用
本篇文章将对计划线程池ScheduledThreadPoolExecutor的使用进行说明。原创 2023-01-18 22:09:48 · 655 阅读 · 0 评论 -
二十二. 并发实战-ThreadPoolExecutor使用
本篇文章将对线程池ThreadPoolExecutor的使用进行说明。原创 2023-01-17 22:10:08 · 570 阅读 · 0 评论 -
二十一. 并发实战-线程的创建方式
本篇文章将对JAVA中的线程创建进行实战说明。原创 2023-01-16 23:30:36 · 74 阅读 · 0 评论 -
二十. Disruptor队列原理简析
并发框架Disruptor是一个高性能队列,其凭借无锁,消除伪共享等策略极大提升了队列性能,本篇文章将基于示例和源码,对Disruptor高性能队列的使用和原理进行学习。原创 2023-01-11 21:20:10 · 510 阅读 · 0 评论 -
十九. 缓存一致性协议与Volatile
本篇文章将对缓存一致性协议出发,引出对volatile关键字的讨论。原创 2023-01-11 21:11:01 · 538 阅读 · 0 评论 -
十八. CountDownLatch源码简析
CountDownLatch是JDK提供的同步工具,可以实现让一个线程等待其它一组线程执行完毕,然后再继续往下执行的功能。本篇文章将对CountDownLatch的内部原理进行分析。原创 2023-01-11 21:03:00 · 87 阅读 · 0 评论 -
十七. ArrayBlockingQueue源码简析
ArrayBlockingQueue是基于数组实现的阻塞队列,本文将对ArrayBlockingQueue的put()和take()方法的阻塞逻辑进行分析。原创 2023-01-11 20:49:32 · 111 阅读 · 0 评论 -
十六. ThreadLocal的使用及原理分析
ThreadLocal用于多线程环境下每个线程存储和获取线程的局部变量,这些局部变量与线程绑定,线程之间互不影响。本篇文章将对ThreadLocal的使用和原理进行学习。原创 2023-01-11 00:51:54 · 131 阅读 · 0 评论 -
十五. Synchronized之锁升级
本篇文章主要学习synchronized关键字在JDK1.6引入的偏向锁和轻量级锁,并围绕synchronized关键字的锁的升级进行展开讨论。本篇文章讨论的锁是通过synchronized加的锁,是不同于java.util.concurrent.locks.Lock的另外一种加锁机制,后续文中提及锁,均指synchronized关键字的锁。原创 2023-01-11 00:38:56 · 148 阅读 · 0 评论 -
十四. 线程睡眠/阻塞/等待的总结
已知让线程睡眠(阻塞或等待)的方式有四种,分别是Thread.sleep(time),LockSupport.park(),Object.wait()和Condition.await(),本篇文章对上述四种方式进行一个简单对比。原创 2023-01-13 21:36:58 · 114 阅读 · 0 评论 -
十三. 等待通知机制之Condition接口
Condition接口定义了一组方法用于配合Lock实现等待/通知模式,与之作为对比的是,用于配合synchronized关键字实现等待/通知模式的定义在java.lang.Object上的监视器方法wait()和notify()等。原创 2023-01-13 21:35:24 · 103 阅读 · 0 评论 -
十二. 读写锁-ReentrantReadWriteLock原理分析
读写锁,即ReentrantReadWriteLock,同一时刻可以允许多个读线程获取锁,但当写线程获取锁后,读线程和其它写线程应该被阻塞。原创 2023-01-13 21:34:21 · 77 阅读 · 0 评论 -
十一. 重入锁-ReentrantLock原理分析
重入锁,即ReentrantLock,继承于Lock接口,提供锁重入功能。重入锁与不可重入锁的区别在于,重入锁支持已经获取锁的线程重复对锁资源进行获取。原创 2023-01-13 21:32:50 · 220 阅读 · 0 评论 -
十. 队列同步器AQS原理分析
AbstractQueuedSynchronizer,即队列同步器,通过继承AbstractQueuedSynchronizer并重写其方法可以实现锁或其它同步组件,本篇文章将对AbstractQueuedSynchronizer的使用和原理进行学习。原创 2023-01-11 00:19:00 · 124 阅读 · 0 评论 -
九. Executor框架中的任务和任务的执行结果
Executor框架中,提供了Runnable接口和Callable接口用于定义任务,提供了Future接口来表示任务的异步计算结果,本篇文章将对任务和任务的执行结果进行分析。原创 2023-01-12 22:22:24 · 347 阅读 · 0 评论 -
八. ScheduledThreadPoolExecutor原理解析-DelayedWorkQueue
DelayedWorkQueue是ScheduledThreadPoolExecutor线程池使用的任务阻塞队列。DelayedWorkQueue是基于小根堆实现的延时优先级队列,队列中的元素就是ScheduledFutureTask,因此DelayedWorkQueue的队列头节点任务总是最优先被执行的任务。本篇文章将对DelayedWorkQueue的实现原理进行分析。原创 2023-01-12 22:21:12 · 439 阅读 · 0 评论 -
七. ScheduledThreadPoolExecutor原理解析-ScheduledFutureTask
已知提交到ScheduledThreadPoolExecutor中的任务均会被封装成ScheduledFutureTask,因此本篇文章将对ScheduledFutureTask的原理进行分析。原创 2023-01-12 22:19:49 · 174 阅读 · 0 评论 -
六. ScheduledThreadPoolExecutor原理解析-任务提交
ScheduledThreadPoolExecutor继承于ThreadPoolExecutor,扩展实现了延时执行任务和定时执行任务的功能。ScheduledThreadPoolExecutor存储任务的队列为DelayedWorkQueue,是一个基于小根堆实现的延时优先级队列,ScheduledThreadPoolExecutor会将每一个提交到线程池的任务先封装为ScheduledFutureTask,然后再插入到DelayedWorkQueue中。原创 2023-01-12 22:18:14 · 149 阅读 · 0 评论 -
五. ThreadPoolExecutor原理解析-关闭线程池
关闭ThreadPoolExecutor的方法有shutdown()和shutdownNow()方法,本篇文章将对ThreadPoolExecutor的关闭进行分析。原创 2023-01-12 22:16:27 · 2613 阅读 · 0 评论 -
四. ThreadPoolExecutor原理解析-执行任务
ThreadPoolExecutor执行任务的入口方法是execute(),本篇文章将结合ThreadPoolExecutor部分源码,对ThreadPoolExecutor执行任务的流程进行分析。原创 2023-01-12 22:13:38 · 241 阅读 · 0 评论 -
三. ThreadPoolExecutor原理解析-认识线程池状态
本篇文章将结合ThreadPoolExecutor的部分源码,认识ThreadPoolExecutor中的五种线程池状态。原创 2023-01-12 22:11:32 · 152 阅读 · 0 评论 -
二. Executor框架简介
Executor框架提供了组件来管理Java中的线程,Executor框架将其分为任务,线程执行任务,任务执行结果三部分。原创 2023-01-12 22:08:33 · 66 阅读 · 0 评论 -
一. ThreadPoolExecutor线程池使用
线程池是Java中使用较多的并发框架,合理使用线程池,可以:降低资源消耗,提高响应速度,提高线程的可管理性。本篇文章为《Java并发编程的艺术》第9章的学习笔记,根据原文作者的编写思路,依次对线程池的原理,线程池的创建,线程池执行任务和关闭线程池进行了学习和总结。原创 2023-01-10 23:39:06 · 975 阅读 · 0 评论