发布与逸出的定义
将线程的对象放在公共域,使其他线程可见,即为发布。
错误的发布,即为逸出。
安全的发布方式
- 将对象放在静态域中。对象会在初次使用Test类的时候进行初始化。
public class Test {
public static Object obj = new Object();
}
- 将对象放在final域中。
- 使用volatile修饰或者使用AtomicReference
- 使用锁
- 事实不可变对象。即对象没有用final修饰,但是在使用过程中,对象不会被修改。