一个线程不安全的Singeton模式
设计模式中的单件(Singleton)模式如果按传统的方法设计,是线程不安全的。
如下:
package DesignPattern.singleton;class Singleton{private static Singleton sample;private Singleton(){}public static Singleton getInstance(){if (sample == null){Thread.yield();sample = new Singleton();}return sample;}}public class MyThread extends Thread{public void run(){Singleton singleton = Singleton.getInstance();System.out.println(singleton.hashCode());}public static void main(String args[]){Thread threads[] = new Thread[5];for (int i=0 ; i < threads.length ;i++){threads[i] = new MyThread();}for (int i=0 ; i < threads.length ;i++){threads[i].start();}}}
17237886775438581871372805066417237886
public static synchronized Singleton getInstance() { }
private static final Singleton sample = new Singleton();