《代码整洁之道》--第13章 并发
1. 为什么要并发 a) 并发是一种解耦策略。他帮助我们吧做什么(目的)和何时做(时机)分解开。 b) 在web应用的servlet模式下,当有web请求时,servlet就会异步执行。 2. 挑战 a) 当两个线程相互影响时就会出现不可预期的情况。这是因为线程在执行那行java代码时有许多可能路径可行,有些路径会产生错误的结果。回答这个问题需要理解 Just-IN-Time编译器如何对待生成的字节码,还 要理解java内存模型认为什么东西具有原子性 3. 并发防御原则 a) SRP i. 并发相关的代码有自己的开发,修改和调优生命周期 ii. 开发相关代码有自己要对付的挑战,和非并发代码不同 iii. 即便没有周边应用程序增加的负担,写的不好的并发代码可能的出错方式数量也足够挑战性 iv. 建议:分离并发代码和其他代码 b) 推论:限制数据作用域 i. 谨记数据封装;严格限制对可能被共享的数据的访问 c) 推论:使用数据复本 i. 从一开始就避免共享数据,从多线程收集所有副本的结果,并在单个线程中合并这些结果 d) 推论:线程应尽可能地独立 i. 尝试将数据分解到可被独立线程(可能在不同处理器上)操作的独立子集 4. 了解java库 a) 线程安全群集 i. Java.util