を新規作成しますが、私は4つのクラスを持っている私のproblem--株のインスタンスが、ここですべての新しいプロセスのため
です。
テストクラスは、スターターの新しいインスタンス(プロセス全体を読み込んで開始します)を作成します。 スターターはスケジューラークラスとデータベースクラスを初期化します。
テストクラスはスターターにデータを渡します。スターターはこれをデータベースクラスのHashMapに格納します。 スケジューラはと同じ HashMapをデータベースクラスから読み取ります。
は今、まったく同じHashMapのは、私のJavaプロジェクト全体のすべてのクラスからのアクセスであることを保証するために、私はHashMapの静的作ることや、データベースシングルトンクラス作るために2 options--を持っています。私はデータベースをシングルトンクラスにしました。
problem-- Testクラスこの
スターターstarterInstance1 =新しいスターター(ない場合)。
スターターstarterInstance2 =新しいスターター();
どのようにして、starterInstance1とstarterInstance2にデータベースクラスまたはHashMapの独自のインスタンスがあることを確認できますか?
==========
だけより明確である:
クラスTest {
スターターSTART1 =新しいスターター(); //自分のアプリケーションの1つのインスタンスを作成します
start1.init(); //これは、スケジューラなどを初期化して行います "getDatabaseInstanceを()"
ための式(I = 0 int型、I < 50; iが++){
start1.sendData( "abc"); //この50のリクエストはすべて、データベースプールのHashMapに格納されるリクエストを送信するスレッドプールに送信されます。 HashMapはスケジューラや他のクラスによって同時にアクセスされます。私はすべてのクラスがDBの同じインスタンスにアクセスするように、Databaseクラスのシングルトンを作成しました。
}
//同様に自分のアプリケーションの別のインスタンスを作成
スターターSTART2 =新しいスターター()。
start2.init(); //ここに「getDatabaseInstance()」を実行すると、私は上記と同じインスタンスを取得します。私はアプリケーションのこのインスタンスのための別のデータベースが欲しいです。どのように私はこれを達成するのですか? {
START2(; I < 50 I ++は、I = 0をINT)ため
。sendData( "abc");あなたの質問へ
}
}
データベースがシングルトンである場合、私は彼らが別のインスタンスを持っている可能性がどのように表示されません。これがシングルトンパターンのポイントです。あなたの質問の一部は、すべてのクラスで同じ正確なマップにアクセスする必要があり、別のインスタンスはそれぞれのインスタンスが独自のインスタンスを持つ必要があると言います。なんでしょう? –
はいシングルトンはインスタンスが1つしかないことを意味します。しかし、私はそれを望んでいない。私のアプリケーション全体の出発点はStarterクラスです。私のアプリケーションの新しいインスタンスが作成されるたびに(つまり、新しいStarter())、それはそれ自身のデータベースと同じデータベースにアクセスする独自のスケジューラーを持っていることを望みます。データベースをシングルトンクラスにすることは、ここではすべての新しいStarter()が同じデータベースを使用することを暗示するものではありません。すべての新しいStarter()に独自のデータベースを持たせたい – anzaan