here is my problem--
I have 4 classes - Starter , Database and Scheduler and a Test class.
Test class will create a new instance of Starter (which loads and starts the entire process). Starter initializes Scheduler and Database classes.
Test class passes a data to Starter. Starter stores it in a HashMap in Database class. Scheduler reads the same HashMap from Database class.
Now to ensure that the exact same HashMap is access by all classes throughout my java project, I have 2 options-- to make HashMap static or to make Database a singleton class. I have made Database a singleton class for now.
The problem-- if Test class does this
Starter starterInstance1 = new Starter();
Starter starterInstance2 = new Starter();
how do i ensure starterInstance1 and starterInstance2 have their own instance of Database class or the HashMap?
==========
Just being more clear:
class Test{
Starter start1 = new Starter();//creating 1 instance of my application
start1.init();//this will initialize Scheduler etc and do a "getDatabaseInstance()"
for(int i=0;i<50;i++){
start1.sendData("abc"); //all these 50 requests will b submitted to a threadpool that will send request to be stored in HashMap in Database class. The HashMap will be accessed concurrently by Scheduler and other classes. I have made the Database class singleton so that all classes will be accessing the same instance of DB.
}
//Similarly creating another instance of my application
Starter start2 = new Starter();
start2.init();//now here if I do "getDatabaseInstance()", i will get the same instance as above. but i want a separate Database for this instance of application. how do i achieve this?
for(int i=0;i<50;i++){
start2.sendData("abc");
}
}