Java实现单例模式的3中实现方式
来源:互联网 发布:linux tar 解包 编辑:程序博客网 时间:2024/06/08 13:57
第一种实现方式
/** * 类描述:使用DCL双检查锁机制 */public class MyObject {private volatile static MyObject myObject;private MyObject(){}public static MyObject getInstance(){if (myObject!=null) {}else{synchronized(MyObject.class){if (myObject == null) {myObject=new MyObject();}}}return myObject;} }
public class MyThread extends Thread{@Overridepublic void run(){System.out.println(MyObject.getInstance().hashCode());}}
public class Run {public static void main(String[] args) {MyThread t1=new MyThread();MyThread t2=new MyThread();MyThread t3=new MyThread();t1.start();t2.start();t3.start();}}第二种实现方式
/** * 使用静态内置类实现单例模式 */public class MyObject {private static class MyObjectHandler{private static MyObject myObject=new MyObject();}private MyObject(){}public static MyObject getInstance(){return MyObjectHandler.myObject;}}
public class MyThread extends Thread{@Overridepublic void run(){System.out.println(MyObject.getInstance().hashCode());}}
public class Run {public static void main(String[] args) {MyThread t1=new MyThread();MyThread t2=new MyThread();MyThread t3=new MyThread();t1.start();t2.start();t3.start();}}第三种实现方式
/** * 使用static代码块实现单例模式 * **/public class MyObject {private static MyObject instance = null;private MyObject(){}static{instance=new MyObject();}public static MyObject getInstance(){return instance;}}
public class MyThread extends Thread{@Overridepublic void run(){System.out.println(MyObject.getInstance().hashCode());}}
public class Run {public static void main(String[] args) {MyThread t1=new MyThread();MyThread t2=new MyThread();MyThread t3=new MyThread();t1.start();t2.start();t3.start();}}
阅读全文
0 0
- Java实现单例模式的3中实现方式
- java单例模式的实现方式
- java单例模式的实现方式
- Java单例模式常用的3种实现方式
- 四中方式实现单例模式
- Java单例模式实现方式
- 【java】单例模式的两种实现方式
- Java 单例模式的安全实现方式
- Java单例模式的三种实现方式
- 单例模式的Java泛型实现方式
- Java中四种线程安全的单例模式实现方式
- Java单例模式的几种实现方式
- Java单例设计模式的两种实现方式
- java实现单例模式的几种方式
- java中最严谨的单例模式的实现方式
- java中实现单例模式的几种方式,简单易懂
- 单例模式的多种实现方式
- 单例模式的多种实现方式
- python3.5+django1.9+mySQL
- 4selenium+python 登录
- 用Python和Pygame写游戏-从入门到精通(11)鼠标控制输入
- Java多线程——常用的实现多线程的两种方式
- spark2.2.0全分布式配置
- Java实现单例模式的3中实现方式
- MFC 窗体大小控制
- Struts2-参数封装
- 剑指Offer-59
- 《深入理解java虚拟机(第二版)》学习笔记6——类加载机制
- Accelerated C++ 5 Using sequential containers and analyzing strings
- 30 多年的编码经验浓缩成的 10 条最佳实践
- 每日一诗词 —— 将进酒
- JavaScript为unicode编码转换为中文