第二章:线程与锁(超越内置锁)

1.内置锁的弊端

内置锁的使用:

synchronized(object){

//使用共享资源

}

内置锁虽然方便但是又很多限制:

一个线程因为等待内置锁而进入阻塞之后,就无法终端该线程

尝试获取内置锁时,无法设置超时

获得内置锁,必须使用synchronized块

2. ReentrantLock

超越内置锁就是靠ReentrantLock替代synchronized工作,弥补内置锁的问题。用法如下:

Lock lock = new ReentrantLock();

lock.lock();

try{

//使用共享资源

} finally{

lock......

第二章:线程与锁(互斥与内存模型)

1.概览

线程和锁模型可以达到目的,不过与新技术相比,稍微有点难以驾驭和危险。抛开众所周知的缺点,其仍然是开发并发软件的首选技术。

2.简单粗暴的特点

线程与锁模型是对底层硬件运行过程形式化。这是其模型最大的优点也是最大的缺点。这种模型非常直接,不过如果程序员不精通这种模型或者编程语言没有提供足够的帮助,将会使得长须容易出错且难以维护。

3.互斥和内存模型

3.1 不同步,互斥资源带来的坑

问题:书中采用java来说明这一章。锁的竞态条件使得程序结果不正常,例子如下。原因是++count的时候,2个线程由于竞态条件,有可能只对数据递增了1次。++count的字节码......

第一章:并行和并发概述

1.概览

感谢查看我阅读《七周七并发模型》的读书笔记。所有读书笔记内容不一定完美无缺,甚至可能有时候会存在一些错误,请批判性地阅读。如果我的读书笔记能给你带来一些帮助,我会感到十分高兴的。

并发编程是时代的选择。编发编程复兴的主要驱动力来自于所谓的”多核危机“。一些编程语言比如Erlang、Haskell、Go、Scala、Clojure因为对并发编程提供了良好的支持,而受到广泛的关注。

2.并发和并行

这个我用自己的话来解释可能更加明白:

并发:同一时间段内能够完成多样事情,这几件事情在某个时间点上只有一件事被处理。例如你的CPU只有1个核心,他可以并发的处......