这是我的问题-
我有4个类-Starter,Database和Scheduler和一个Test类。
测试类将创建一个Starter的新实例(它将加载并启动整个过程)。
Starter初始化Scheduler和Database类。
测试类将数据传递给Starter。 Starter将其存储在Database类的HashMap中。
调度程序从数据库类读取相同的HashMap。
现在,为了确保整个Java项目中的所有类都可以访问完全相同的HashMap,我有2个选项-使HashMap静态或使Database成为单例类。我现在已经将数据库作为单例课程。
问题-如果Test类这样做
Starter starterInstance1 = new Starter();
Starter starterInstance2 = new Starter();
如何确保starterInstance1和starterInstance2拥有自己的Database类或HashMap实例?
==========
只是更清楚:
班级考试{
Starter start1 = new Starter(); //创建我的应用程序的1个实例
start1.init(); //这将初始化Scheduler等并执行“ getDatabaseInstance()”
for(int i = 0; i
start1.sendData(“ abc”);
//所有这50个请求都将提交到线程池,该线程池将发送请求以存储在Database类的HashMap中。 Scheduler和其他类将同时访问HashMap。我已经使Database类成为单例,以便所有类都将访问相同的DB实例。
}
//类似地创建我的应用程序的另一个实例
起动器start2 = new Starter();
start2.init(); //现在如果我执行“ getDatabaseInstance()”,我将获得与上述相同的实例。但我想为此应用程序实例使用单独的数据库。我该如何实现?
for(int i = 0; i
start2.sendData(“ abc”);
}
}
最佳答案
对于您的问题,最一般的答案可能是简单地让Starter
跟踪对其自身Database
的引用。当然,Scheduler
必须做同样的事情:
public class Starter {
Database db;
Starter(Database db) {
this.db = db;
}
}
/* ... */
Database db1 = new Database();
Starter starter1 = new Starter(db1);
Scheduler scheduler1 = new Scheduler(db1);
Database db2 = new Database();
Starter starter2 = new Starter(db2);
Scheduler scheduler2 = new Scheduler(db2);