- 构造函数需要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();
}
}