个人简介

Echo Blog


江湖无名 安心练剑
  • JCIP-08-生产者消费者模式
    生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 这个属于基础模式,代码可以参考 轻松学习多线程-06-Producer Consumer 模式 缓冲区改良 单单抽象出生产者和消费者,还够不上是生产...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-07-CopyOnWriteArrayList 详解
    问题 是什么? 有什么优缺点? 为什么性能高?原理是什么? 源码阅读 设计的启发 参考资料 《java 并发编程的艺术》 https://my.oschina.net/jielucky/blog/167198 https://blog.csdn.net/maoyuanming08...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-07-CopyOnWriteArraySet 入门使用及源码详解
    问题 是什么? 有什么优缺点? 为什么性能高?原理是什么? 源码阅读 设计的启发 CopyOnWriteArraySet 官方定义 CopyOnWriteArraySet 是一个使用内部CopyOnWriteArrayList进行所有操作的Set。 特性 因此,它具有相同的基本...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-07-java 从零实现 CopyOnWriteHashMap
    COW 的思想 思想的通用性 CopyOnWriteArrayList 和 CopyOnWriteArraySet 这种读写分离的思想是通用的。 今天就让我们用这种思想实现一个简单的工具:CopyOnWriteHashMap。 实践出真知 这个工具包都出来几十年了,还是用的人很少。 要学以致用,站在巨人的肩膀上, 自己实现一个 copyOnWriteMap 类定义 publ...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-06-同步容器类
    问题 为什么需要同步容器类? 同步容器类的优点和缺点? 对我们设计的启发 同步容器类 java 中的同步容器 在Java中,同步容器主要包括2类: 1)Vector、Stack、HashTable 2)Collections类中提供的静态工厂方法创建的类 Vector实现了List接口,Vector实际上就是一个数...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-05-对象组合
    问题 如何保证一个类是线程安全的?怎么验证? 线程安全的类可以成为组件,更加方便的创建线程安全的类吗? 线程安全的类有哪些条件 在设计线程安全类的过程中,需要包含以下三个基本要素: 1、找出构成对象状态的所有变量 2、找出约束状态变量的不变性条件 3、建立对象状态的并发访问管理策略 ps: 一言以蔽之,让所有变量都被对象并发管理。 ...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-04-可见性,发布与溢出,线程安全对象的构建
    1 可见性 说到底并发还是离不开 JMM 的原理。可以看下我以前整理的 JMM 主内存和工作内存 以及后面的可见性,原子性,有序性。 1.1 内存模型 主内存:所有线程都可以访问 本地内存:每个线程私有的内存 java 的所有变量都存储在主内存中 每个线程有自己独的工作内存,保存了该线程使用到的变量副本,是对主内存中变量的一份拷贝 ...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-03-线程安全
    1. 线程安全性 1.1 概念 当多个线程访问某个类时,不管运行时环境采用何种调度方式 或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现正确的行为,那么称这个类时线程安全的。 1.2 解决方案 多个线程访问可变的变量,导致其值不正确。 修复的方式可以从下面的几个方面入手: 不在线程之间共享该变量 ThreadLocal +...
    2019-01-18 03:21:15 | Concurrency