需要为JVM中的特定类创建指定数量的实例
与Singleton pattern
一样,我们只管理和创建一个实例。
现在假设为class Abc
,我只想
1。)最多只创建3个实例。
2.。)多线程环境。
class Abc{
private static Abc abc1;
private static Abc abc2;
private static Abc abc3;
private Abc(){
}
public static synchronized Abc getInstance1(){
if(abc1 == null){
abc1 = new Abc();
}
return abc1;
}
: // same as above for abc2
: // same as above for abc3
}
**现在问题是我想将实例从总数3增加到4或5或n数。
我还想公开这么多方法(getInstance1(), getInstance2()... etc)
答案 0 :(得分:0)
看起来你想要每个线程一个实例。
为此提供或开箱即用的解决方案,像Guice,spring等许多其他DI容器。
如果您真的想自己这样做,可以使用地图为每个线程保留一个实例。
public class Abc {
private static Map<Long, Abc> instances = new HashMap<Long, Abc>();
//hiding the constructor
private Abc() { }
public static Abc getInstance() {
Long threadId = Thread.currentThread().getId();
if (!instances.containsKey(threadId)) {
instances.put(threadId, new Abc());
}
return instances.get(threadId);
}
}