多例模式有两种,一种是
指定上限
的多例,另一种是不设上限(这种和随时随地new没什么区别,不做讨论),我们通常说的多例指的是第一种,这种模式比较简单,说白了就是在单例基础上多new几个出来,然后提供两个获取对象的方法,一个随机获取,一个定点获取。代码如下:
/**
* @desc 多例模式
* @date 2020年9月6日下午3:14:42
* @author liujl
*/
public class MoreInstance {
/**
* 定义多例的上限
*/
private static final Integer COUNT= 3;
private static final List<MoreInstance> INSTANCES = new ArrayList<>(COUNT);
static {
for (int i = 0; i < COUNT; i++) {
INSTANCES.add(new MoreInstance());
}
}
public static MoreInstance getTargetInstance() {
Random r = new Random();
int index = r.nextInt(COUNT);
return INSTANCES.get(index);
}
/**
* 获取特定实例
* @param targetIndex
* @return
*/
public static MoreInstance getTargetInstance(int targetIndex) {
return INSTANCES.get(targetIndex);
}
private MoreInstance() {}
public static void main(String[] args) {
for (int i = 0; i < 1000; i++) {
new Thread(() -> System.out.println("1---" + MoreInstance.getTargetInstance(0).hashCode())).start();
new Thread(() -> System.out.println("2---" + MoreInstance.getTargetInstance(0).hashCode())).start();
new Thread(() -> System.out.println("3---" + MoreInstance.getTargetInstance().hashCode())).start();
}
}
}
版权声明:本文为jinyouxinzao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。