《Java并发编程实战》读书笔记(更新中)

一、简介

1.多线程编程要注意的几点:

   安全性:永远不发生糟糕的事情

 活跃性:某件正确的事情最终会发生(不会发生无限循环或者死锁)

 性能:正确的事尽快发生(上下文切换消耗之类的)

二、线程安全

1.为了防止变量在线程中导致程序出错,可以有以下三种方式:

  1)不在线程之间共享该状态变量

  2)将状态变量改为不可变的常量

  3)在访问状态变量时使用同步

3.当设计线程安全的类时,良好的面向对象技术、不可修改性,以及明晰的不变性规范都能起到一定的帮助作用。(比如:开发人员可以将状态变量保存在公开域中,而不是封装在每个单独的类中)

4.无状态对象一定是线程安全的。无状态对象:即不包含任何域,也不包含任何对其它类中域的引用

5.竞态条件:由于不恰当的执行时序而出现不正确的结果。(最常见的就是:先检查后执行的非线程安全操作)

6.应尽可能的使用现有的线程安全对象(如AtcomicLong)

7.要保持状态的一致性,就需要在单个原子操作中更新所有相关的状态变量

8.要判断同步代码块的合理大小,需要在各种设计需求之间进行权衡,包括安全性(这个必须满足)、简单性和性能

9.当知心时间较长的技术或者可能无法快速完成的操作时(例如I/O),一定不要持有锁

原文地址:https://www.cnblogs.com/xujanus/p/4530018.html