Singleton设计模式之java
在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;
单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。下面我们就程序说话。
public class Singleton {
private static Singleton singleton;
private Singleton() {
}
public static Singleton getInstence() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
我们看这个程序确实实现了单例模式,但是我们有没有想过要是在多线程中的话呢,虽然在多线程中出现问题的可能性非常小,但是作为一个严谨程序员我们必须应该考虑到,:
public class Singleton {
private static Singleton singleton;
private Singleton() {
}
public static Singleton getInstence() {
synchronized () {
if (singleton == null) {
singleton = new Singleton();
}
}
return singleton;
}
}
这确实考虑考到了线程的问题,我们本来只是想让new这个操作并行就可以了,现在,只要是进入getInstance()的线程都得同步啊,注意,创建对象的动作只有一次,后面的动作全是读取那个成员变量,这些读取的动作不需要线程同步啊。这样的作法感觉非常极端啊,为了一个初始化的创建动作,居然让我们达上了所有的读操作,严重影响后续的性能啊!
所以进一步改进:
public class Singleton
{
private static final Singleton singleton;
privat
Singleton设计模式之java 来自淘豆网m.daumloan.com转载请标明出处.