
《Java并发编程的艺术》笔记
oayoat
一枚渴望成长的程序员
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《Java并发编程的艺术》目录
第1章介绍Java并发编程的挑战,向读者说明进入并发编程的世界可能会遇到哪些问题,以及如何解决。第2章介绍Java并发编程的底层实现原理,介绍在CPU和JVM这个层面是如何帮助Java实现并发编程的。第3章介绍深入介绍了Java的内存模型。Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,本章试图揭开Java内存模型的神秘面纱。第4章从介绍多线程技术带来...原创 2019-04-28 17:35:21 · 268 阅读 · 0 评论 -
死锁
1.资源大部分死锁都和资源相关,在进程(或线程)对设备、文件等取得排他性访问权时,有可能会出现死锁,我们把这些需要排他性使用的对象称为资源。简单来说,资源就是随着时间的推移,必须能获得、使用和释放的任何东西。可抢占资源可以从拥有它的进程中抢占而不产生任何副作用不可抢占资源是指在不引起相关的计算失败的情况下,无法把它从占有它的进程中抢占过来。资源是否可抢占取绝于上下文环境。1.死锁定...原创 2019-04-29 20:11:46 · 142 阅读 · 0 评论 -
volatile
1.Lock前缀的指令**在多核处理器下会引发了两件事情1)将当前处理器缓存行的数据写回到系统内存。2)这个写回内存的操作会使在其他CPU里缓存了该内存地址的数据无效。2.volatile原理为了提高处理速度,处理器不直接和内存进行通信,而是先将系统内存的数据读到内部缓存(L1,L2或其他)后再进行操作,但操作完不知道何时会写到内存。如果对声明了volatile的变量进行写操作,J...原创 2019-04-29 21:19:48 · 114 阅读 · 0 评论 -
synchronized的实现原理与应用
1.synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现为以下3种形式。对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的Class对象。对于同步方法块,锁是Synchonized括号里配置的对象。2.当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。那么锁到底存在哪里呢?锁里面会存储什么信息呢?从JVM规...原创 2019-04-29 21:33:53 · 119 阅读 · 0 评论 -
2.3 原子操作的实现原理
1.术语定义2.处理器如何实现原子操作 32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。首先处理器会自动保证基本的内存操作的原子性。处理器保证从系统内存中读取或者写入一个字节是原子的,意思是当一个处理器读取一个字节时,其他处理器不能访问这个字节的内存地址。Pentium 6和最新的处理器能自动保证单处理器对同一个缓存行里进行16/32/64位的操作...原创 2019-04-29 23:44:46 · 298 阅读 · 0 评论 -
3.1Java内存模型的基础
3.1.1 并发编程模型的两个关键问题1. 线程之间如何通信 通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信。Java的并发采用的是共享内存模型,Java...原创 2019-04-30 10:48:35 · 150 阅读 · 0 评论