java并发---线程池 发表于 2020-07-25 | 分类于 java并发 | 线程池的实现原理当向线程池提交一个任务之后,线程池是如何处理这个任务的呢?本节来看一下线程池的主要处理流程,处理流程图如图所示。从图中可以看出,当提交一个新任务到线程池时,线程池的处理流程如下。 线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程 ... 阅读全文 »
java并发---AQS【条件队列】 发表于 2020-07-25 | 分类于 java并发 | 要看懂这个,必须要先看懂上一篇关于 java并发--AQS【简介】,java并发--独占锁的介绍,或者你已经有相关的知识了,否则这节肯定是看不懂的。 Condition使用我们先来看看 Condition 的使用场景,Condition 经常可以用在生产者-消费者的场景中,请看 Doug Lea 给 ... 阅读全文 »
java并发---AQS【共享锁】 发表于 2020-07-25 | 分类于 java并发 | 这篇,我们的关注点是 AQS 最后的部分,AQS 共享模式的使用。有前两篇文章的铺垫,剩下的源码分析将会简单很多。 本文先用 CountDownLatch 将共享模式说清楚,然后顺着把其他 AQS 相关的类 CyclicBarrier、Semaphore 的源码一起过一下。 相对来说,如果读者有前面 ... 阅读全文 »
java并发---AQS【独占锁】 发表于 2020-07-25 | 分类于 java并发 | 独占锁ReentrantLock的内部类FairSync,NonfairSync都是AQS的独占锁实现 获取资源与释放资源的流程图如下: " 公平锁加锁AQS大多数情况下都是通过继承来使用的, 子类通过覆写 tryAcquire 来实现自己的获取锁的逻辑,我们这里以ReentrantLock为例来说 ... 阅读全文 »
java并发---volatile关键字 发表于 2020-07-25 | 分类于 java并发 | volatile的特性 可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入 原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性 volatile写-读建立的happens-before关系从 ... 阅读全文 »