リクエストをリッスンするクラス(サーバー)があり、リクエストが行われると、それを処理する新しいスレッドを開始します。ハンドラー スレッドはデータを読み取り、それをハッシュマップに格納して終了します。データが入ってきたときに複数のハンドラースレッドがデータを読み取る可能性があるため、ハッシュマップをサーバークラスに配置しました。
ハッシュマップを変更/アクセスするには、ゲッターとセッターを作成し、サーバークラスをすべてのワーカースレッドに渡す必要があるため、これが正しいアプローチであるかどうか混乱しています。私のクエリを試して説明するためのいくつかのサンプルコード:
public class Server implements Runnable {
private HashMap<String, Integer> data;
public void run() {
while(true) {
Socket s = serverSocket.accept();
Handler h = new Handler(s);
Thread t = new Thread(h);
t.start();
}
}
}
public class Handler implements Runnable {
public void run() {
//read in data from socket
data.put(d); //access the hashmap and insert data in
}
}
アドバイスをいただければ幸いです。ありがとう。