您的位置:首页 > 其它

2、单例模式(内部类的实现方式)

2017-10-20 01:35 253 查看
package demo;

/**
* Created by sunyifeng on 17/10/19.
*/
public class MyObject {
// 内部类
private static class MyObjectHandler{
private static MyObject myObject = new MyObject();
};

public MyObject() {
// do noting
}

public static MyObject getInstance() {
return MyObjectHandler.myObject;
}
}

package demo;

/**
* Created by sunyifeng on 17/10/19.
*/
public class MyThread extends Thread {
@Override
public void run() {
super.run();
System.out.println(MyObject.getInstance());
}
}

package demo;

/**
* Created by sunyifeng on 17/10/19.
*/
public class Run {
public static void main(String[] args) {
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
MyThread thread3 = new MyThread();
thread1.start();
thread2.start();
thread3.start();
}
}

运行结果:

demo.MyObject@618d2605

demo.MyObject@618d2605

demo.MyObject@618d2605

程序分析:

1、定义一个静态内部类,在里面创建实例;通过静态的getInstance()方法返回单例。

2、多个线程取到的是同一实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: