![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java--并发
文章平均质量分 68
JSJ姜姜姜
https://github.com/JiangJiangjungle
展开
-
Fork/Join模式
为了提高大量任务的执行效率,一般会使用线程池(ThreadPoolExecutor)。但是考虑到某些单任务本身就可以继续拆分并发执行(例如对1000W个数据进行排序可以使用分治思想),如何更好地提高这些任务的并发效率将成为一个问题。Fork/Join模式解决了任务更小粒度拆分的问题,我们可以将一个任务拆分成多个可并发执行的部分,最后再对各个子任务的结果进行汇总,得到最终执行结果。...原创 2020-04-21 14:07:54 · 330 阅读 · 0 评论 -
仿照jdk源码实现简化版的线程池
仿照java.util.concurrent包中的ThreadPoolExecutor实现,做了许多简化,只保留核心exec()函数,帮助理解源码,仅供参考。ThreadPoolpackage com.jsj.jdk.threadpool;import java.util.HashSet;import java.util.concurrent.*;import java.util...原创 2019-01-08 11:29:27 · 183 阅读 · 0 评论 -
ReentrantLock的非公平锁和公平锁的实现原理
非公平锁因为之前已经分析过AQS,ReentranLock是利用一个实现了AQS的NonfairSync来获取非公平锁。所以只需关注NonfairSync的tryAcquire的实现。 获取锁(nonfairTryAcquire方法定义在Sync内部类中) 获取锁成功分为两种情况,第一个if判断AQS的state是否等于0,表示锁没有人占有。接着,hasQueu...原创 2018-11-26 17:17:19 · 1268 阅读 · 0 评论 -
Java线程池的理解和应用
结合上面的流程图来逐行解析,首先前面进行空指针检查,wonrkerCountOf()方法能够取得当前线程池中的线程的总数,取得当前线程数与核心池大小比较,如果小于,将通过addWorker()方法调度执行。如果大于核心池大小,那么就提交到等待队列。如果进入等待队列失败,则会将任务直接提交给线程池。如果线程数达到最大线程数,那么就提交失败,执行拒绝策略。 excute()方法中添加任务的方式是使用a...转载 2018-05-24 10:57:22 · 389 阅读 · 0 评论 -
Java中的锁分类
https://www.cnblogs.com/qifengshi/p/6831055.html在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对...转载 2018-05-15 16:14:05 · 139 阅读 · 0 评论 -
线程的状态转换与Thread解析
转自:https://www.cnblogs.com/jijijiefang/articles/7222955.html线程在一定条件下,状态会发生变化。线程一共有以下几种状态:1、新建状态(New):新创建了一个线程对象。2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU转载 2018-03-22 11:28:42 · 314 阅读 · 0 评论 -
并发-Java中的Copy-On-Write容器
并发-Java中的Copy-On-Write容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新...转载 2018-03-21 21:56:34 · 134 阅读 · 0 评论 -
彻头彻尾理解 ConcurrentHashMap
摘要: ConcurrentHashMap是J.U.C(java.util.concurrent包)的重要成员,它是HashMap的一个线程安全的、支持高效并发的版本。在默认理想状态下,ConcurrentHashMap可以支持16个线程执行并发写操作及任意数量线程的读操作。本文将结合Java内存模型,分析JDK源代码,探索ConcurrentHashMap高并发的具体实现机制,包括其在JD转载 2018-03-21 16:58:03 · 409 阅读 · 0 评论 -
ThreadLocal概述
作者:winwill2012链接:https://www.zhihu.com/question/23089780/answer/62097840来源:知乎概述相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你1...转载 2018-03-20 23:00:00 · 120 阅读 · 0 评论 -
Java同步框架AQS原文分析
一、概述类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。本文主要转载了2篇文章,做了一些自己的批注。原文链接:http://www.cnblogs.com/waterystone/p/4920797.htmlhttps://www...转载 2018-03-23 11:46:07 · 256 阅读 · 0 评论 -
Java锁优化
转自:http://blog.csdn.net/tanga842428/article/details/52202986锁优化技术:适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等。这些技术都是为了在转载 2018-03-08 11:51:30 · 148 阅读 · 0 评论