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

前言

    在看这本书之前,看过了《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  可重入锁,也可以控制锁的公平和不公平。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值