如果我正确理解你的要求,你可以尝试这样的事情:
public class Fiveton {
private Fiveton(){
//create private constructor to prevent new instances from outside of the class
}
private static final int MAX_NB_INSTANCES = 5;
private static List<Fiveton> instances;
/**
* Should be called once at the beginning
*/
public static void init(){
instances = new ArrayList<Fiveton>(MAX_NB_INSTANCES);
for(int i=0;i<MAX_NB_INSTANCES;i++){
instances.add(new Fiveton());
}
}
/**
* threadNb can be the name of the Thread::getName()
*
* @param threadNb
* @return Fiveton
*/
public static Fiveton getInstance(int threadNb){
synchronized(instances.get(threadNb%MAX_NB_INSTANCES)){
return instances.get(threadNb%MAX_NB_INSTANCES);
}
}
/**
* other logic
*
*/
}
您只需要在 Fiveton 对象后面添加逻辑即可。
更新
或者正如肖恩·帕特里克·弗洛伊德( Sean Patrick Floyd )所指出的那样,您可以使用它来管理实例,并为您希望以这种方式更清洁和透明的逻辑使用不同的类(对象)。
更新
添加了延迟初始化