Java并发编程实战:第一章,第二章读书笔记

第一章

摘要: 本章主要讲述并发编程简史,多线程给我们带来的优势 比如: 能发挥出多核处理器的强大能力,异步事件的简化处理等优点,第三节主要讲述了线程带来的风险,接下来我就主要记录一下这几个问题。

1. 安全性问题,在多个线程的系统中 如果对线程间共享的变量操作不当,就会带来千奇百怪的结果。

2. 活跃性问题,安全性意味永远不要发生糟糕的事情,而活跃性则意味着正确的事情最终会发生。

3. 性能问题,即使满足了活跃性问题,错误的代码 错误的处理 就有可能导致代码的吞吐率低 资源消耗率高等问题。

总结: 第一章主要是简介线程的发展史 重要性以及多见性。

第二章

摘要: 本章主要讲述线程安全性。

什么是线程安全性: 线程安全性就是在多线程系统中,不管运行时环境采用何种调度方式,或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为。

原子性: 原子性的意思就是 一个或多个操作的执行像一个原子一样不可再分,即要执行则不可被打断。举个例子 普通的long或者double 类型的变量在Java中的赋值不是原子性操作 因为他们都是64位的数 所以会分前后32位赋值。

竞态条件: 如果代码运行的结果和代码的执行顺序有关,那么就称代码存在竞态条件,常见的竞态条件就是先检查后运行。而造成竞态条件的代码则称为临界区,在临界区中使用适当的同步机制则可以消除竞态条件。

通常会采用内置锁来保护状态,一种常见的加锁的约定是,将所有的可变状态都封装到对象内部,并通过对象的内置锁对所有访问可变状态的代码路径进行同步,使得在该对象上不会发生并发访问。当然我们对于具体的实例还需要具体分析,有时候也会采用atomic包来确保共享状态的单访问性及原子性。

总结: 本章主要讲述的线程安全性,造成线程安全性问题的原因及解决办法。

 

猜你喜欢

转载自blog.csdn.net/lcn_2017/article/details/81174704