如何实现一个单例?

  • 构造函数需要private访问权限,这样避免外部通过new创建实例;
  • 考虑对象创建时的线程安全问题
  • 考虑是否支持延迟加载
  • 考虑getInstance性能是否高(是否加锁)

1、饿汉式:

点击查看代码
package com.tjl;

import java.util.concurrent.atomic.AtomicLong;

/**
 * @author 田金龙
 * @Date 2023/3/28 23:24
 * @v-1.0
 */
public class IdGenerator {

    private AtomicLong id = new AtomicLong(0);

    private static final IdGenerator instance = new IdGenerator();

    private IdGenerator() {
    }

    public static IdGenerator getInstance() {
        return instance;
    }

    public long getId() {
        return id.incrementAndGet();
    }
}
posted @ 2023-03-28 23:27  码农界的小田  阅读(12)  评论(0编辑  收藏  举报