美文网首页
单例--使用枚举类型实现

单例--使用枚举类型实现

作者: im宇 | 来源:发表于2016-09-24 12:55 被阅读58次

今天逛博客,发现原来单例的实现用枚举类型是最提倡的。赶紧记录到我的java学习笔记中。_代码很简洁:

/**
* 这是就是我们要的Single
*/
public enum Single {
    instanse;
    int i;
    public void someMethod(){
        System.out.println("someMethod");
    }
    public int getI() {
        return i;
    }
    public void setI(int i) {
        this.i = i;
    }
}
/**
* 这是调用示例
*/
public class Demo {
    public static void main(String[] args){
        Single s = Single.instanse;
        s.setI(100);
        System.out.println(s.getI());
        s.someMethod();
    }
}

此外下面是之前写的代码:

public class Single1 {
    static UploadTaskQueue queue = null;
    public static UploadTaskQueue getUploadTaskQueue() {
        if(queue == null) {
            queue = new UploadTaskQueue();
        }
        return queue;
    }   
}

最近才发现上面的代码属于线程不安全的。比如在queue还未被实例化之前同一时刻有两个线程都执行到if(queue == null),那么这两个线程都会去执行queue = new UploadTaskQueue()。最后的结果是两个线程得到的queue不是同一个。毕竟我这菜鸟写的代码没有经过太多的推敲O(∩_∩)O~。解决方案可以看下这篇文章:
抛砖引玉

相关文章

  • 枚举单例

    描述 本文先反编译枚举,再使用枚举实现单例 枚举 单例 单例源码 单例反编译 引用 http://www.benf...

  • java单例模式小结

    双检索实现的单例,是线程安全的。 枚举类型实现的单例,目前比较推荐

  • 单例--使用枚举类型实现

    今天逛博客,发现原来单例的实现用枚举类型是最提倡的。赶紧记录到我的java学习笔记中。_代码很简洁: 此外下面是之...

  • 使用枚举类型实现单例

    从Java 1.5 发行版本起,实现Singleton可以通过编写一个包含单个元素的枚举类型来实现: 示例如下: ...

  • 单例模式

    饿汉模式: 懒汉模式: Double CheckLock(DCL)实现单例 静态内部类实现单例 枚举单例 使用容器...

  • 单例模式之枚举类enum

    通过枚举实现单例模式 枚举类实现单例模式的优点 对于饿汉式单例模式和懒汉式单例模式了解的同学,使用以上两种单例模式...

  • 单例模式(Java内部类加载顺序)

    你真的会写单例模式吗——Java实现Android设计模式源码解析之单例模式深度分析 Java 的枚举类型:枚举的...

  • Java并发 | 单例的其他实现

    单例模式 静态内置类实现 使用static代码块实现 使用enum枚举实现

  • Effective Objective-C读后笔记(4)

    31、dispatch_once实现单例 使用dispatch_once实现单例设计模式。 32、多用枚举器,少用...

  • 单例模式

    枚举也可以实现单例,实际工作中我还能少见到有用单例模式使用枚举的。这里我就不列出来了

网友评论

      本文标题:单例--使用枚举类型实现

      本文链接:https://www.haomeiwen.com/subject/flexyttx.html