序文:
如果你没有时间阅读这本,那你就来对地方了。小编会将每一章刨去废话,取其精华。分享给大家。如果觉得可以请不要忘了关注小编。我会定期跟新java 中的经典书籍。
正文:
第一部分总结:
1.所有的并发问题都可以归结为如何协调对并发状态的访问,可变状态越少,越容易确保线程安全。
2.尽量将属性声明为final类型,除非它们是可变的。
3.不可变对象一定是线程安全的。
不可变对象能极大地降低鬓发编程的复杂性。它们更为简单而且安全,可以任意共享而无需使用加锁或保护性复制等机制。(只对这个对象操作的时候,如果是复合操作另作考虑)
4.封装有助于管理复杂性。
将数据封装在对象中,更容易维持不变性条件。(封装的不好就会发布逸出,别人就想怎么改怎么改,麻烦大了)
5.用锁保护每个可变的共享变量。
6.当保护同一个不变性条件中的所有变量时,要使用同一个锁。
7.在执行复合操作期间,要持有锁。
8.如果从过个线程中访问同一个可变变量时没有使用同步锁,(不是原子变量)那么线程就会出现问题。
9.不要存在侥幸心理,我这次执行没有出现线程问题,就不用同步。
10.再设计过程中要考虑线程安全,要文档化。(便于后面的人知道)
11.当只有一个共享变量的时候,推荐使用原子变量。
12.当一个变量只有一个线程修改,其他线程要保证可见性,就可以使用volited 声明变量。
领取专属 10元无门槛券
私享最新 技术干货