为了在线程之间进行可靠的通信, 也为了互斥访问, 同步是必要的. -> 归因于内存模型, 规定线程所做的变化何时以及如何对其他线程可见.如果读和写操作没有都被同步, 同步就不会起作用.volatile修饰符不执行互斥访问..., 但它可以保证任何一个线程在读取该域的时候都将看到最近刚刚被写入的值. -> 用在只需要通信而不需要互斥的场合.增量操作符++不是原子的: 先读, 后写.多个线程可能会看到同一个值.如果没有同步共享的可变数据..., 可能会引起liveness和safety failures.避免本条目中所讨论到的问题的最佳办法是: 不共享可变的数据. -> 要么不可变, 要么不共享. -> 将可变数据限制在单个线程中.让一个线程在短时间内修改一个数据对象...中的线程不仅负责处理任务, 还会互相偷取任务, 来确保每个线程都忙碌, 提高了CPU的利用率.并行的streams就是在fork join pools之上写的, 允许你很容易就能利用其性能提升.第81条...有条件的线程安全必须在文档中指明"哪个方法调用序列需要外部同步, 以及在执行这些序列的时候要获得哪把锁".无条件的线程安全类, 应该考虑使用私有锁对象来代替同步的方法 -> 防止客户端程序和子类的不同步干扰