package aa.singleton;
public class TestCase {
public static void main(String[] args) {
SingleDemo7 e1 = SingleDemo7.INSTANCE;
SingleDemo7 e2 = SingleDemo7.INSTANCE;
System.out.println(e1==e2);
}
}
class SingleDemo{
private SingleDemo() {
}
private static SingleDemo instance = new SingleDemo();
public static SingleDemo getInstance() {
return instance;
}
}
class SingleDemo1{
private SingleDemo1() {
}
private static SingleDemo1 instance ;
static{
instance = new SingleDemo1();
}
public static SingleDemo1 getInstance() {
return instance;
}
}
class SingleDemo2{
private SingleDemo2() {
}
private static SingleDemo2 instance ;
public static SingleDemo2 getInstance() {
if(instance==null) {
instance = new SingleDemo2();
}
return instance;
}
}
class SingleDemo3{
private SingleDemo3() {
}
private static SingleDemo3 instance ;
public static synchronized SingleDemo3 getInstance() {
if(instance==null) {
instance = new SingleDemo3();
}
return instance;
}
}
class SingleDemo4{
private SingleDemo4() {
}
private static SingleDemo4 instance ;
public static SingleDemo4 getInstance() {
synchronized (SingleDemo4.class) {
if(instance==null) {
instance = new SingleDemo4();
}
}
return instance;
}
}
class SingleDemo5{
private SingleDemo5() {
}
private static volatile SingleDemo5 instance ;
public static SingleDemo5 getInstance() {
if(instance==null) {
synchronized (SingleDemo5.class) {
if(instance==null) {
instance = new SingleDemo5();
}
}
}
return instance;
}
}
//1.这种方式采用了类加载的机制保证初始化实例时只有一个线程
//2.静态内部类方式在SingleDemo66被装载时不回被立即实例化,而是在需要的时候实例化,
//调用getinstance方法,才会被转载到SingleDemo6
//3.类的静态属性指挥在第一次加载类的时候实例化,所以这里jvm保证了线程的安全性,在类进行初始化时,别的线程无法进入
//4.线程安全
class SingleDemo6{
private SingleDemo6() {
}
public static synchronized SingleDemo6 getInstance() {
return SingleDemo66.INSTANCE;
}
private static class SingleDemo66 {
private static final SingleDemo6 INSTANCE = new SingleDemo6();
}
}
enum SingleDemo7{
INSTANCE;
public void test() {
System.out.println("enum~");
}
}
设计模式-单例模式的不同写法
猜你喜欢
转载自blog.csdn.net/weixin_39472101/article/details/121437448
今日推荐
周排行