ImageLoader中的应用
private volatile static ImageLoader instance;
public static ImageLoader getInstance() {
if (instance ==null) {
synchronized (ImageLoader.class) {
if (instance ==null) {
instance =new ImageLoader();
}
}
}
return instance;
}
EventBus中的应用
private static volatile EventBus defaultInstance;
public static EventBus getDefault() {
if (defaultInstance ==null) {
synchronized (EventBus.class) {
if (defaultInstance ==null) {
defaultInstance =new EventBus();
}
}
}
return defaultInstance;
}
关键字volatile
volatile让变量每次使用的时候,都从主存中取。而不是从各个线程的“工作内存”。
也就是说,volatile变量对于每次使用,线程都能得到当前volatile变量的最新值。
volatile不保证线程执行的有序性,不保证并发的正确性。
网友评论