
杂记---并发
一点一滴一世界
喜欢编程,所以编程
展开
-
并发工具类源码分析---CyclicBarrier(详细)
一、作用 JDK1.8英文注释* A synchronization aid that allows a set of threads to all wait for* each other to reach a common barrier point. CyclicBarriers are* useful in programs involving a fixed sized ...原创 2019-09-11 14:19:48 · 247 阅读 · 1 评论 -
JAVA---线程中断(详细)
问题是最好的老师!一、思考问题一:什么情况下线程会中断?线程自己会中断吗,为什么要去中断一个线程,在什么情况下才能中断一个线程。问题二:如何中断一个线程? 问题三:线程被中断意味着什么?线程被中断了,其状态是什么,被中断的线程还能继续执行吗。二、带着疑问看源码与Thred中断相关的方法(除去private native之外可被调用)有Thread.interrupt(),...原创 2019-09-11 23:41:34 · 377 阅读 · 0 评论 -
JAVA---线程池(源码分析)
问题是最好的老师。一、思考问题一:为什么需要使用线程池? 问题二:线程池的工作原理? 问题三:线程池是如何做到线程复用的? 问题四:当无任何任务执行时,线程池中的线程数量是等于核心线程数还是0?最大线程数是如何降为核心线程数的? 问题五:线程池有哪些状态,当线程池停止后,已经添加的任务如何处理,即将添加的任务如何处理? 问题六:线程池中的阻塞队列以及其实现原理是什么,该如何选择?...原创 2019-09-16 21:36:37 · 200 阅读 · 0 评论 -
JAVA---阻塞队列
问题是最好的老师!一、思考问题一:阻塞队列阻塞了什么操作?为什么需要这样一个队列(使用场景是什么)?我们都知道在线程池中会用到阻塞队列,那么线程池为什么不用一个一般的队列,要用阻塞队列。那么阻塞队列是否还有其他场景。问题二:阻塞队列是如何实现阻塞/唤醒的?以及何时阻塞/唤醒?我们知道常见的阻塞唤醒方式有Object.wait/notify和Condition.await/si...原创 2019-09-18 16:49:18 · 354 阅读 · 0 评论 -
AQS分析第一篇(AQS是什么,有什么用,数据结构)
问题是最好的老师!一、思考第一篇并不深究AQS的实现原理,简单的解决以下几个问题,如果您可以轻松回答出以下问题,可跳过该篇。问题一:AQS是什么?其使用场景在哪里?看过JUC源码的大概都了解ReetrantLock是借助AQS实现的,那么AQS到底提供了怎样的功能,除了ReetrantLock还有哪些地方用到了AQS。问题二:AQS的数据结构?AQS的全名叫Abstrac...原创 2019-09-20 09:51:07 · 2475 阅读 · 0 评论 -
AQS分析第二篇(其提供的受保护方法代表什么意思,如何使用AQS)
问题是最好的老师!一、思考第一篇分析了AQS是干什么的,其内部的数据结构是怎样的,第二篇依然不深入理解AQS的主要实现,先解决以下问题:如何使用AQS?通过第一篇我们知道,AQS是一个同步框架,其提供了排队和阻塞等机制,子类需要实现其受保护方法,去自己定义state所代表的语义。那么其提供了哪些受保护方法,都是干嘛的,该如何使用,其提供的一般方法都是干嘛的,这一篇,我们将围绕这些问...原创 2019-09-21 10:25:03 · 400 阅读 · 1 评论 -
AQS分析第三篇(借助ReentrantLock探索AQS独占模式的实现原理)
问题是最好的老师!一、思考问题一:关于Node节点的属性(waitStatus和nextWaiter)?第一篇中我们了解到AQS中队列的Node节点的数据结构,其中Node有几个属性waitStatus和nextWaiter,我们只是从注释翻译了解到其基本概念,那么AQS中不同情况下这两个属性的取值是怎么样的,这一点需要我们取思考。问题二:AQS内部是如何使用队列的?我...原创 2019-09-23 20:21:09 · 283 阅读 · 0 评论 -
AQS分析第四篇(借助CountDownLatch探索AQS共享模式的实现原理)
上一篇我们通过ReentrantLock分析了如何AQS独占模式的实现原理。这一篇我们将根据CountDownLatch探索共享模式的实现原理,如果你认真看完上一篇,那该篇的内容将更容易理解。主要分析以下几个问题?一、思考问题一:CountDownLatch提供了怎样的功能?其实现原理是什么?AQS独占模式是怎样实现的? 问题二:共享锁和独占锁的区别是什么?二、源码分析因为Coun...原创 2019-09-25 22:33:16 · 502 阅读 · 0 评论 -
并发工具类源码分析---Semaphore
通过本篇我们将解决以下几个问题。一、思考问题一:该类提供了怎样的功能?使用场景? 问题二:该类的实现原理是什么?一、注释翻译如果您不知道该类的作用或者设计初衷,请跟我一起从注释中找答案:一个计数信号量。信号量维护了一组概念上的许可证。每一个调用acquire方法的线程将阻塞直到一个许可证可用,然后这个线程将取走它。每一个release方法调用都将增加一个许可证,其会潜在的释放一...原创 2019-09-30 10:59:20 · 238 阅读 · 0 评论