java设计模式-单例模式

package Test;



public class ThreadAndSingleton {



	private ThreadAndSingleton() {

	}



	private static ThreadAndSingleton threadAndSingleton = null;



	/**

	 * 试试不加synchronized关键字,会出现两个实例的

	 * @param sleepTime

	 * @return

	 */

	public static synchronized ThreadAndSingleton getIntstance(int sleepTime) {

		if (threadAndSingleton == null) {

			try {

				Thread.sleep(sleepTime);

			} catch (InterruptedException e) {

				e.printStackTrace();

			}

			threadAndSingleton = new ThreadAndSingleton();

		}

		return threadAndSingleton;

		

	}



	public static void main(String[] args) {

		/**

		 * 下面这就属于模型驱动模式

		 */

		Thread th1 = new Thread(new Runnable() {

			@Override

			public void run() {

				System.out.println("th1:" + ThreadAndSingleton.getIntstance(1000));

			}

		});

		Thread th2 = new Thread(new Runnable() {

			@Override

			public void run() {

				System.out.println("th2:" + ThreadAndSingleton.getIntstance(0));

			}

		});

		th1.start();

		th2.start();

	}

}

  关于

getIntstance方法被同步的说明:如果不同步,同事访问这个方法可能造成进入后等待,然后另一次访问开始了,结果造成两个实例,就不是单例模式了。

你可能感兴趣的:(java设计模式)