![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 并发编程实战
roseduan
个人微信公众号:【roseduan写字的地方】,技术之外,咱们聊聊人生琐碎。
展开
-
Java 并发学习笔记(一)——原子性、可见性、有序性问题
计算机的 CPU、内存、I/O 设备的速度一直存在较大的差异,依次是 CPU > 内存 > I/O 设备,为了权衡这三者的速度差异,主要提出了三种解决办法: CPU 增加了缓存,均衡和内存的速度差异 发明了进程、线程,分时复用 CPU,提高 CPU 的使用效率 编译指令优化,更好的利用缓存 三种解决办法虽然有效,但是也带来了另外的三个问题,分别就是并发 bug 产生的源头。 1.可...原创 2019-05-10 15:53:10 · 376 阅读 · 0 评论 -
一文读懂 Java 中的原子类
一、无锁方案 Java 并发包中的原子类都是基于无锁方案实现的,相较于传统的互斥锁,无锁并没有加锁、解锁、线程切换的消耗,因此无锁解决方案的性能更好,同时无锁还能够保证线程安全。 1. 无锁方案的实现原理 无锁主要依赖 CAS(Compare And Swap) ,即比较并交换,CAS 是一条 CPU 指令,其本身是能够保证原子性的。CAS 中有三个参数: 共享变量的内存地址 A 用于比较的值 ...原创 2019-05-24 15:23:04 · 256 阅读 · 0 评论 -
Java 中的线程安全容器
一、同步容器 常用的一些容器例如 ArrayList、HashMap、都不是线程安全的,最简单的将这些容器变为线程安全的方式,是给这些容器所有的方法都加上 synchronized 关键字。 Java 的 Collections 中实现了这些同步容器: 简单的使用如下: List<String> list = Collections.synchronizedList(new Arra...原创 2019-05-25 07:45:27 · 625 阅读 · 0 评论 -
Java 并发学习笔记(二)
请参看前一篇文章:Java 并发学习笔记(一)——原子性、可见性、有序性问题 六、等待—通知机制 什么是等待通知—机制?当线程不满足某个条件,则进入等待状态;如果线程满足要求的某个条件后,则通知等待的线程重新执行。 等待通知机制的流程一般是这样的:线程首先获取互斥锁,当不满足某个条件的时候,释放互斥锁,并进入这个条件的等待队列;一直等到满足了这个条件之后,通知等待的线程,并且需要重新获取互斥锁。 ...原创 2019-05-16 15:38:27 · 248 阅读 · 0 评论 -
Java 并发设计模式
文章目录Java 并发设计模式一、Thread Local Storage 模式1. ThreadLocal 的使用2. ThreadLocal 原理浅析3. ThreadLocal 内存泄漏问题二、Immutability 模式1. 不可变的概念2. 对象池三、Guarded Suspension 模式1. Guarded Suspension 实现2. 使用示例四、Balking 模式五、Wo...原创 2019-06-05 15:22:55 · 568 阅读 · 0 评论 -
Java SDK 并发包全面总结
文章目录一、Lock 和 Condition1. Lock 的优势2. Lock 和 Condition 的使用二、ReadWriteLock三、StampedLock1. StampedLock 的使用及特点2. StampedLock 的注意事项四、Semaphore五、CountDownLatch六、CyclicBarrier七、ThreadPoolExecutor1. 线程池的工作原理2....原创 2019-05-29 11:33:50 · 541 阅读 · 0 评论