五种单例模式的效率问题

谈到效率,当然要使用多线程!5个单例设计模式同时创建1亿个单例的耗时。

public class Client02 {
	public static void main(String[] args) throws Exception{
		long start = System.currentTimeMillis();
		Thread t1 = new Thread(new Runnable() {
			@Override
			public void run() {
				for (int i = 0; i < 100000000; i++) {
					Object o = Husband01.getWife();
				}
			}
		});
		t1.start();
		t1.join();//等待线程执行完毕
		
		long end = System.currentTimeMillis();
		System.out.println("耗时:" + (end - start));
	}
}
执行结果表

懒汉式:耗时:1998ms

饿汉式:耗时:44ms

双重锁:耗时:227ms

内部类:耗时:46ms

枚举:耗时:46ms

执行效率:饿汉式>内部类>枚举>双重锁>懒汉式

问:既然了解了安全性,效率,那么我们究竟该如何使用呢?

若单例对象占用资源少,不需要延迟加载,那么使用枚举好于饿汉式,因为枚举十分安全,耗时差不多。

扫描二维码关注公众号,回复: 1215983 查看本文章

若单例对象占用资源多,需要延迟加载,那么使用内部类好于懒汉式,耗时差距明显。

双重锁会产生其他问题,尽量避免使用。

猜你喜欢

转载自blog.csdn.net/a445849497/article/details/57558946