java 并发编程的艺术 -- 总结

来源:互联网 发布:phantom无人机控制软件 编辑:程序博客网 时间:2024/05/23 23:23

前言

    在看这本书之前,看过了《java多线程编程的核心技术》书中列出了一些java多线程会遇到的基本的类和方法,sychronized,lock,executor等的基本使用方法,为看这本书打了一些基础。《java 并发编程的艺术》中除第一章讲各种多线程概念的内存语义不好理解外,其他章节基本是对多线程concurrent包中多种类的源码讲解,个人认为很有必要一看。

内容

java并发编程  --》 第一部分从底层讲java的内存语义,happends-before,编译阶段的重排序和cpu总线的锁机制,

java内存模型: java 线程     --》 本地内存  ---》 共享内存。  

volatile保证变量对内存的可见性,但是不保证操作的原子性。(在前期是通过对地址总线加锁实现。后期有改进。。(具体改进方式???))

syschronized:加锁,在编辑阶段使用关键字(锁(什么锁????了))替换。


第一部分看得头晕脑胀,很难看懂,后来凑合看完了。


第二部分: lock.lock() 所做的操作包括: 1、将当前线程放入同步队列;2、进入自旋状态(for 循环,判断能否获取锁);3、获取锁,执行线程。

讲lock的使用和实现方式。 lock接口,同步器;对线程安全的同步队列做自旋(队列中每个节点自己做循环,满足条件,则退出同步队列。)

所谓自旋,即同步队列中的每个节点进行自我检查: 首先检查自己是否是头结点;然后检查自己能不能获取到锁。 如果两个条件满足,就返回,结束自旋;


ReentrenLock  可重入锁,也可以控制锁的公平和不公平。

原创粉丝点击