1
只有状态可变的 共享的数据要求同步
因此,不共享 则不用同步
两种方式不共享(成为线程封闭):
1 栈封闭 2 ThreadLocal
同样,不可变,也不用同步
(设置为状态不可变对象。状态变时,用新对象指向引用
常见做法:
封装一个不可变对象,然后用volatile引用它
)
2 安全发布
不要在构造函数里start一个线程(因为内部类含有外部类引用。在外部类构造完整之前就被发布)
1
只有状态可变的 共享的数据要求同步
因此,不共享 则不用同步
两种方式不共享(成为线程封闭):
1 栈封闭 2 ThreadLocal
同样,不可变,也不用同步
(设置为状态不可变对象。状态变时,用新对象指向引用
常见做法:
封装一个不可变对象,然后用volatile引用它
)
2 安全发布
不要在构造函数里start一个线程(因为内部类含有外部类引用。在外部类构造完整之前就被发布)