摘要:[TOC] 简介   本文是基于JDK8分析ConcurrentHashMap的实现,在前一篇博文 "多线程十一之ConcurrentHashMap1.7源码分析" 中分析了JDK7中是如何实现满足并发且线程安全的ConcurrentHashMap:ConcurrentHashM 阅读全文
posted @ 2019-06-14 09:42 默数至天亮 阅读 (199) 评论 (0) 编辑
摘要:[TOC] 简介   本文是基于JDK7分析ConcurrentHashMap的实现原理,这个版本ConcurrentHashMap的代码实现比较清晰,代码加注释总共也就1622行,适合用来分析学习。   ConcurrentHashMap相当于多线程版本的H 阅读全文
posted @ 2019-06-04 10:34 默数至天亮 阅读 (202) 评论 (0) 编辑
摘要:[TOC] 简介   我们都很熟悉容器对象ArrayList,并且在初学时就被告知ArrayList不是线程安全的:当我们在使用迭代器遍历ArrayList时,如果有其他线程修改了ArrayList对象,那么就会抛出ConcurrentModificationException异 阅读全文
posted @ 2019-03-25 09:39 默数至天亮 阅读 (223) 评论 (4) 编辑
摘要:[TOC] 多线程学习笔记九之ThreadLocal 简介   ThreadLocal顾名思义理解为线程本地变量,这个变量只在这个线程内,对于其他的线程是隔离的,JDK中对ThreadLocal的介绍: This class provides thread local varia 阅读全文
posted @ 2019-03-13 19:04 默数至天亮 阅读 (216) 评论 (2) 编辑
摘要:[TOC] 简介   在Web开发中,如果要密集处理多个任务时,相对于每次都一个创建线程去执行任务,新建线程来执行任务相对来说是个更好的选择,体现在以下三点: 1. 降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2. 提高响应速度。 当任务到达时,任务可 阅读全文
posted @ 2019-01-22 09:34 默数至天亮 阅读 (268) 评论 (0) 编辑
摘要:[TOC] 简介   Semaphore[ˈseməfɔ:(r)]意为信号量,比较书面的解释是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。   Semaphore维护了信号量许可,线程只有获得了许可才能够访问资源,可以把S 阅读全文
posted @ 2019-01-08 09:21 默数至天亮 阅读 (192) 评论 (0) 编辑
摘要:[TOC] 简介   在编写多线程程序时,难免需要对并发流程进行控制,Thread类有join()和yield()等方法,JUC提供了更为灵活的并发工具类,下面就学习这些工具类的用法以及实现。 CountDownLatch   latch意思是门闩,count 阅读全文
posted @ 2018-12-27 09:24 默数至天亮 阅读 (214) 评论 (0) 编辑
摘要:[TOC] 简介   在前一篇博客 "多线程学习笔记三之ReentrantLock与AQS实现分析" 分析了基于同步器AQS实现的独占锁ReentrantLock,AQS同步器作为JUC组件实现锁的框架,基于AQS除了可以实现独占锁,还可以实现共享锁。   R 阅读全文
posted @ 2018-12-18 09:43 默数至天亮 阅读 (306) 评论 (0) 编辑
摘要:[TOC] 简介   在使用内置锁synchronized时,通过调用java.lang.Objec中定义的监视器方法,主要有wait()、wait(long timeout)、notify()和notifyAll()方法,可以实现等待/通知模式。Codition接口中也定义了类 阅读全文
posted @ 2018-12-10 14:58 默数至天亮 阅读 (175) 评论 (0) 编辑
摘要:[TOC] 简介   ReentrantLock是基于同步器AbstractQueuedSynchronizer(AQS)实现的独占式重入锁,支持公平锁、非公平锁(默认是非公平锁)、申请锁可响应中断以及限时获取锁等高级功能,分析ReentrantLock就离不开同步器AQS,关系 阅读全文
posted @ 2018-12-06 10:41 默数至天亮 阅读 (183) 评论 (0) 编辑