文章地址: http://tutorials.jenkov.com/java-concurrency/index.html

Table of Contents

第一章 并发模型

第二章 并发的本质

第三章 CompareAndSwap常用类

第四章 Thread Signal


第一章 并发模型

1.1 Parallel Workers

1.2 Assembly Line

Reference:  http://tutorials.jenkov.com/java-concurrency/concurrency-models.html

第二章 并发的本质

2.1.1 Race Condition (code block atomic)

要求被执行的代码块要么全部执行,要么都不执行。

Reference: http://tutorials.jenkov.com/java-concurrency/race-conditions-and-critical-sections.html

2.1.2 Variable Visibility (write to main memory, read from main memory)

对数据的写,不保存在cache里,而是直接刷新到内存;

对数据的读,不是从cache里读取,而是从内存里读取;

http://tutorials.jenkov.com/java-concurrency/java-memory-model.html

http://tutorials.jenkov.com/java-concurrency/volatile.html

2.2.1 blocking

race condition : synchronized

variable visibility:  synchronized

synchronized method           synchronized static method

synchronized instance         synchronized Class instance

又叫悲观锁,适用于高并发场景。

http://tutorials.jenkov.com/java-concurrency/synchronized.html

2.2.2  unblocking

race condition: Unsafe.compareAndSwap

variable visibility: volatile (64位原子,写内存,读内存; write before, read after 指令禁止重排)

又叫乐观锁,适用于中低并发场景。

http://tutorials.jenkov.com/java-concurrency/compare-and-swap.html

http://tutorials.jenkov.com/java-concurrency/non-blocking-algorithms.html

第三章 CompareAndSwap常用类

3.1 Lock

ReentrantLock 可重入锁 (已经获得该类的锁,在critical area里需要访问同一个类的其他critical area)

ReentrantReadWriteLock 可重入读写锁

http://tutorials.jenkov.com/java-concurrency/locks.html

http://tutorials.jenkov.com/java-concurrency/read-write-locks.html

3.2 BlockingQueue

ArrayBlockingQueue

LinkedBlockingQueue

3.3 AtomicXxx

AtomicBoolean

AtomicInteger

AtomicLong

AtomicDouble

AtomicReference

第四章 Thread Signal

4.1 Object

wait 在一个monitor对象上block住,释放锁

notify 在monitor上block住的线程中随机选择一个唤醒;

notifyAll 唤醒monitor上所有block住的线程

4.2 Condition

await 在lock上block住

signal 在lock上随机释放一个线程

signalAll 唤醒lock上所有等待线程

总结: Object 的通知只能wait和notify在同一个队列里,Lock.newCondition可以分情况划分队列wait、notify.

http://tutorials.jenkov.com/java-concurrency/starvation-and-fairness.html

扩展阅读:LMAX Disruptor

https://itnext.io/understanding-the-lmax-disruptor-caaaa2721496

java concurrency 读书笔记相关推荐

  1. java虚拟机读书笔记 第三章 垃圾收集器和内存分配策略

    java虚拟机读书笔记 第三章 垃圾收集器和内存分配策略 GC需要完成的三件事情:哪些内存需要回收.什么时候回收.如何回收 垃圾回收器在对堆进行回收前,首先要确定那些对象存活,哪些对象已经死去,判断的 ...

  2. Core Java 8 读书笔记-Networking编程

    Core Java 8 读书笔记-Networking编程 作者:老九-技术大黍 原文:Core Java 8th Edition 社交:知乎 公众号:老九学堂(新人有惊喜) 特别声明:原创不易,未经 ...

  3. Java 内存分配——Thinking in Java 4th 读书笔记

    做开发多年,一直忙于项目,从没好好的整理知识,从现在开始,尽量每周多抽时间整理知识,分享在博客,在接下来的博客中,我将为大家分享我读<Java编程思想4th>英文版读书笔记,一来便于知识的 ...

  4. 《Effective Java》读书笔记 - 11.序列化

    Chapter 11 Serialization Item 74: Implement Serializable judiciously 让一个类的实例可以被序列化不仅仅是在类的声明中加上" ...

  5. java pitfalls读书笔记

    以前做的笔记,供需要的朋友参考 刚从图书馆借了几本不错的java经典书籍,翻了翻,做了一些摘抄比较. ·实例方法被覆盖,静态方法被隐藏,即静态方法不能被覆盖 ·试图用子类的静态方法隐藏父类中同样标识的 ...

  6. 《Effective java》—–读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并 ...

  7. 深入Java虚拟机读书笔记[10:20]

    第十章 栈和局部变量操作 第十一章 类型转换 第十二章 整数运算 第十三章 逻辑运算 第十四章 浮点运算 第十五章 对象和数组 第十六章 控制流 第十七章 异常 以上一些是操作码相关的内容, 第十八章 ...

  8. 《Effective Java》读书笔记--创建和销毁对象

    2019独角兽企业重金招聘Python工程师标准>>> 考虑用静态工厂方法代替构造函数. 当我们在写一个工具类时,是不希望用户将该类实例化的,所以应该定义一个private的构造函数 ...

  9. java io读书笔记(6) Writing Arrays of Bytes

    显而易见,一次性写出一堆数据,要比一个byte一个byte的写,快多了,因此,outputstream,给出了2个增强型的write: public void write(byte[] data) t ...

最新文章

  1. 一种无需留坑为页面动态添加View方案
  2. conda env环境配置
  3. npm使用入门(package.json)
  4. 码云一个仓库只有一个项目吗_gitee码云完整使用教程(部署与克隆)
  5. 错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
  6. bat php 监控网站,HTML_进程监控实现代码[vbs+bat],运行后会在%windir%\system32\目录 - phpStudy...
  7. SPOJ - QTREE Query on a tree(树链剖分+线段树)
  8. 一个微服务网关的设计
  9. linux安装Git依赖的包出错,技术|Linux有问必答:如何在Linux上安装Git
  10. Qt|设计模式工作笔记-对单例模式进一步的理解(静态加单例实现专门收发UDP对象)
  11. 一起学习C语言:C语言数据类型(一)
  12. 如何更快获取想要的设计资源?
  13. ES6新特性_使用babel对ES6模块化代码转换_使用browserify对代码进行打包_实现es6兼容其他浏览器--JavaScript_ECMAScript_ES6-ES11新特性工作笔记045
  14. java基础知识查漏 三
  15. 如何让你的硬盘更快,系统更稳定!
  16. HDU 6603 Azshara's deep sea(凸包+区间DP)
  17. pb生成pbtxt时出错
  18. 【AI视野·今日NLP 自然语言处理论文速览 第六期】Fri, 11 Jun 2021
  19. 下行控制信息 - 其他用途的DCI
  20. 项目管理必看书籍推荐

热门文章

  1. android输入法01:SoftKeyboard源码解析02
  2. Java曲线之削峰填谷,Sentinel匀速模式(削峰填谷)
  3. 一、elastic-job、elastic-job-lite-console使用案例
  4. 学术届职称与凡人修仙传等级对应关系
  5. JavaScript补环境及AST实战
  6. js前端面试题总结及答案
  7. 区块链应用的5大方向,哪些公司正在做?
  8. 关于SOM(self-organized map)自组织特征映射神经网络的理解
  9. 自动解压缩pcap中chunk编码和gzip压缩的数据
  10. 更改电脑IE收藏夹路径