![](https://img-blog.csdnimg.cn/20210407114140173.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java并发
文章平均质量分 75
并发包下源码
锵锵忒
生如蝼蚁当立鸿鹄之志,命如纸薄应有不屈之心。
展开
-
项目问题:线程池使用FutureTask得不到抛出的错误
线程池使用FutureTask得不到抛出的错误一、使用Threadpublic static void main(String[] args) { Test test = new Test(); FutureTask futureTask = new FutureTask<>(test); Thread thread = new Thread(futureTask); thread.start(); try {原创 2021-04-18 16:35:06 · 1253 阅读 · 2 评论 -
详解Java线程池
详解Java线程池线程池的作用四种线程池ThreadPoolExecutor执行原理(非常重要)线程池调优线程池的作用减少资源的开销: 减少了每次创建线程、销毁线程的开销。提高响应速度 :每次请求到来时,由于线程的创建已经完成,故可以直接执行任务,因此提高了响应速度。提高线程的可管理性 :线程是一种稀缺资源,若不加以限制,不仅会占用大量资源,而且会影响系统的稳定性。 因此,线程池可以对线...原创 2019-07-16 09:26:19 · 253 阅读 · 0 评论 -
深度解析:AQS原理
深度解析:AQS原理什么是AQS实现原理实现源码acquireReentrantLock的原理图什么是AQSAQS是一个抽象类AbstractQueuedSynchronizer(抽象队列同步器)。它是基于等待队列用来实现同步锁(ReentrantLock,Semaphore,CountdownLatch,CyclicBarrier,Exchanger等等)核心组件的基础框架,它本身没有实现任何的同步接口,只是定义了获取以及释放同步状态的方法来提供自定义的同步组件。实现原理首先说明一下AQS定义了两原创 2020-06-20 17:04:09 · 551 阅读 · 3 评论 -
Java并发——Synchronized实现原理详解
Synchronized实现原理详解一、Synchronized使用场景二、Synchronized实现原理三、锁的优化1、锁升级2、锁粗化3、锁消除一、Synchronized使用场景Synchronized是一个同步关键字,在某些多线程场景下,如果不进行同步会导致数据不安全,而Synchronized关键字就是用于代码同步。什么情况下会数据不安全呢,要满足两个条件:一是数据共享(临界资源),二是多线程同时访问并改变该数据。Synchronized锁的3种使用形式(使用场景):Synchron原创 2020-07-04 11:13:43 · 861 阅读 · 0 评论 -
Future源码解析
Future源码解析FutureDemo执行任务分析获取结果分析Future简单来说就是利用线程达到异步的效果,同时还可以获取子线程的返回值。比如当做一定运算的时候,运算过程可能比较耗时,有时会去查数据库,或是繁重的计算,比如压缩、加密等,在这种情况下,如果我们一直在原地等待方法返回,显然是不明智的,整体程序的运行效率会大大降低。我们可以把运算的过程放到子线程去执行,再通过 Future 去控制子线程执行的计算过程,最后获取到计算结果。这样一来就可以把整个程序的运行效率提高,是一种异步的思想。De原创 2020-08-04 11:57:47 · 654 阅读 · 0 评论 -
ReentrantLock源码解析
ReentrantLock源码解析acquireReentrantLock的原理图ReentrantLock就是使用AQS而实现的一把锁,可以通过构造函数设置为公平锁和非公平锁。它有一个内部类用作同步器是Sync,Sync是继承了AQS的一个子类,并且公平锁(FairSync类)和非公平锁(NonFairSync类)是继承了Sync的两个子类如下图。ReentrantLock的原理是:假设有一个线程A来尝试获取锁,它会先CAS修改state的值,从0修改到1,如果修改成功,那就说明获取锁成功,设置加锁原创 2020-08-26 17:12:53 · 201 阅读 · 0 评论 -
CountDownLatch源码解析
CountDownLatch源码解析在学习CountDownLatch之前,首先需要对AbstractQueuedSynchronizer也就是AQS有一定的理解。如果对AQS不是太熟悉的可以看下我的另一篇文章:下面我们也会先从AQS说起,如果已经对AQS的源码已经有了一定的理解,可以跳过前面AQS部分。...原创 2020-08-26 17:15:12 · 209 阅读 · 0 评论 -
JDK8系列之LongAdder解析
JDK8系列之LongAdder解析前言源码解析longValue()increment()总结前言最近公司的项目在陆续升级jdk8,正好想起之前有人问我的jdk8中新增的LongAdder类和AtomicLong的区别,就忍不住想探究一番。源码解析首先看一下类的定义public class LongAdder extends Striped64 implements Serializable然后来看一下类的属性和方法这里让我困惑的一个问题是LongAdder中没有类似于AtomicLon原创 2021-04-07 14:38:33 · 107 阅读 · 0 评论