这是我的问题-

我有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);

10-06 10:21