关于单例模式的想法-volatile
Posted 迷路的0161
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于单例模式的想法-volatile相关的知识,希望对你有一定的参考价值。
今天看着一个多线程并发用到的关键字:volatile,看了不少资料发现这个是一个共享的直接写入内存使用的关键字修饰变量,用来修饰类变量或者类静态变量,所以有了一个关于单利模式的想法,我们都知道的单例模式的一个写法是:
class Singleton{ private static Singleton instance = null; private Singleton() { } public static Singleton getInstance() { if(instance==null) { synchronized (Singleton.class) { if(instance==null) instance = new Singleton(); } } return instance; } }
当然单例模式还有其他的写法,我要说的是将关键字volatile加在变量instance上:
class Singleton{
private volatile static Singleton instance = null;
private Singleton() {
}
public static Singleton getInstance() {
if(instance==null) {
synchronized (Singleton.class) {
if(instance==null)
instance = new Singleton();
}
}
return instance;
}
}
因为用votalite修饰的变量,在修改时是直接将变量值写进物理内存中去的,不会写入缓存中去,这样,单例模式就更加的,,,,好了
以上是关于关于单例模式的想法-volatile的主要内容,如果未能解决你的问题,请参考以下文章