![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
-----Java 并发编程的艺术
文章平均质量分 52
并发专题
duoduo18up
对世界充满好奇 勇于尝试 喜欢编程
展开
-
多线程 (一)基础线程机制--线程状态--Executor
转载地址: https://github.com/CyC2018/Interview-Notebook一、使用线程实现 Runnable 接口实现 Callable 接口继承 Thread 类实现接口 VS 继承 Thread二、基础线程机制sleep()yield()join()deamon三、结束线程阻塞中断四、线程之间的协作同步与通信的概念理解线程同步线程通信五、线程状态转换六、Execut...转载 2018-03-30 20:08:37 · 1368 阅读 · 1 评论 -
多线程----ScheduledThreadPoolExecutor 定期(延迟)执行任务
ScheduledThreadPoolExecutor :运行机制:做出的修改:DelayQueue任务队列:实现:具体方法源码:take():add()/offer():原创 2018-05-08 17:09:42 · 3297 阅读 · 0 评论 -
多线程----线程池核心类 ThreadPoolExecutor
ThreadPoolExecutor 4 个组件: 3种不同的实现类:FixedThreadPool:SingleThreadExecutor:CachedThreadPool:原创 2018-05-08 15:23:27 · 1234 阅读 · 0 评论 -
多线程----Executor框架结构和成员
Executor 框架的两级调度模型:Executor框架的结构:3部分组成:涉及到的类和结口:Executor框架的使用示意图:Executor框架的成员:原创 2018-05-08 11:55:51 · 189 阅读 · 0 评论 -
多线程----线程池基础原理(创建提交关闭配置)
线程池:线程池的好处(为什么要用ThreadPool):实现原理:ThreadPoolExecutor:执行示意图:执行execute方法的4种情况:execute底层代码实现:线程执行任务示意图:线程池的创建:向线程池提交任务:两种提交方法:execute / submit 关闭线程池: 合理的配置线程池:监测线程池:...原创 2018-05-08 09:56:27 · 284 阅读 · 0 评论 -
并发编程的艺术
学习并发编程从最初的只是了解表层实现 学习如何导包 去上锁 到 知晓常用的方法 会用 实现代码 同步异步 防止并发混乱一步步学习有幸看到 《并发编程的艺术》这本书言简意赅 从底层源码开始深刻剖析 我逐渐知道 看似简单的锁 调用的一个方法下面有好多 相应的结构 和更为具体的原子操作/或是native 方法调用 在马不停蹄地 判断 执行 异常处理...原创 2018-05-07 17:06:11 · 169 阅读 · 0 评论 -
多线程----Fork/Join框架
什么是Fork/Join框架?工作窃取算法:步骤设计:实验代码:package com.duoduo.Thread;import java.util.concurrent.RecursiveTask;public class CountTask extends RecursiveTask<Integer>{ private static final int THREADHOL...原创 2018-05-07 15:56:32 · 209 阅读 · 0 评论 -
多线程----多生产者多消费者(点餐小程序demo)
场景:来快餐店点汉堡 假如同时有多个点餐者和多个生产者 则可以设定在生产一些汉堡之后开始消费 而不是简单的 生产一个即消费一个的固定模式使用最爱的lock 和 Condition : package com.duoduo.Thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.lo...原创 2018-05-09 15:02:38 · 1048 阅读 · 0 评论 -
ConcurrentHashMap(jdk1.8)源码分析
参考书籍《并发编程的艺术》 -------方腾飞博客: https://blog.csdn.net/anla_/article/details/78838860 锁的全面解析 (非常全)值得细细研究 (重要1.8) jdk 1.8 concurrentHashMap在Java中,也有适用与并发情况下Map的 HashTable类Collections...原创 2018-05-02 17:16:23 · 536 阅读 · 0 评论 -
多线程----FutureTask(异步计算结果)
FutureTask:三种状态:FutureTask.get()/ cancel()方法:使用: 因为实现了Runnable接口,则也可以交给Executor执行~代码实例:实现原理:基于AQS(队列同步器) 实现原理图:FutureTask.get()方法的底层源码:FutureTask.run()方法的底层源码:FutureTask的级联唤醒图:...原创 2018-05-08 20:54:03 · 2117 阅读 · 1 评论 -
设计模式3--模板方法模式(Java并发编程的同步器中用到)
前半部分内容转载自https://blog.csdn.net/carson_ho/article/details/54910518 模板方法模式:1.1 定义定义一个模板结构,将具体内容延迟到子类去实现。1.2 主要作用在不改变模板结构的前提下在子类中重新定义模板中的内容。模板方法模式是基于”继承“的;1.3 解决的问题提高代码复用性 将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的...原创 2018-04-23 17:32:43 · 229 阅读 · 0 评论 -
多线程----生产者消费者Lock/synchronized对比(加入BlockingQueue)
(一) 改良版本 LockResource类:package com.duoduo.day330;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class R...原创 2018-04-01 15:46:19 · 349 阅读 · 0 评论 -
多线程(二)内存模型-线程安全
转载地址: https://github.com/CyC2018/Interview-Notebook七、内存模型主内存与工作内存对处理器上的寄存器进行读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存中,保存了被该线程使用到的变量的主内存副本拷贝,线程只能直接操作工作内存中的变量。内存模型三...转载 2018-03-30 20:09:57 · 5764 阅读 · 0 评论 -
多线程总结
什么叫线程安全?举例说明多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 比如无状态对象一定是线程安全的。进程和线程的区别调度: 线程是调度的基本单位,进程是拥有资源的基本单位。同一进程的中线程的切换不会引起进程的切换,不同进程中进行线程切换会引起进程的...转载 2018-08-04 21:04:24 · 218 阅读 · 0 评论