volatile关键字作用

{
    public class Singleton {
        public static volatile Singleton singleton;
        /**
         * 构造函数私有,禁止外部实例化
         */
        private Singleton() {};
        public static Singleton getInstance() {
            if (singleton == null) {
                synchronized (singleton.class) {
                    if (singleton == null) {
                        singleton = new Singleton();
                    }
                }
            }
            return singleton;
        }
    }

}

1.volatile什么作用?如何保证可见性和有序性?
2.static什么作用?final什么作用?
3.单例怎么实现?
4.为什么使用volitale?

发表回复