线程安全的单例-懒汉
作者:互联网
# 普通的单例
public class QQ { public static void main(String[] args) throws InterruptedException { final CountDownLatch latch = new CountDownLatch(10); for (int i = 0; i < 10; i++) { new Thread() { @Override public void run() { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } MyClient.getInstance(); latch.countDown(); } }.start(); } latch.await(); System.out.println(MyClient.count); } } class MyClient { private static MyClient client; public static int count; private MyClient() { count++; } public static MyClient getInstance() { if (client == null) { client = new MyClient(); } return client; } }
# 普通的线程安全的单例
public class QQ { public static void main(String[] args) throws InterruptedException { final CountDownLatch latch = new CountDownLatch(10); for (int i = 0; i < 10; i++) { new Thread() { @Override public void run() { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } MyClient.getInstance(); latch.countDown(); } }.start(); } latch.await(); System.out.println(MyClient.count); } } class MyClient { private static MyClient client; public static int count; private MyClient() { count++; } public synchronized static MyClient getInstance() { if (client == null) { client = new MyClient(); } return client; } }
# 双重校验的线程安全的单例
public class QQ { public static void main(String[] args) throws InterruptedException { final CountDownLatch latch = new CountDownLatch(10); for (int i = 0; i < 10; i++) { new Thread() { @Override public void run() { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } MyClient.getInstance(); latch.countDown(); } }.start(); } latch.await(); System.out.println(MyClient.count); } } class MyClient { private static MyClient client; public static int count; private MyClient() { count++; } public static MyClient getInstance() { if (client == null) { getSynInstance(); } return client; } public synchronized static MyClient getSynInstance() { if (client == null) { client = new MyClient(); } return client; } }
标签:count,MyClient,public,client,线程,单例,new,static,懒汉 来源: https://www.cnblogs.com/lwmp/p/11278374.html