我有一個監聽請求的類(服務器),一旦發出請求,就啓動一個處理它的新線程。處理程序線程將讀取數據,將其存儲到散列表中並完成。我已經把哈希映射到服務器類中,因爲可以有多個處理線程在數據中讀取和當它進來。Java線程 - 改變老闆hashmap的工作線程
我很困惑這是否是正確的方法,因爲要改變/訪問哈希映射,我必須寫getters & setter並將Server類傳遞給每個工作線程。一些示例代碼來嘗試和描述我的查詢:
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
}
}
任何意見將不勝感激。謝謝。
確保在使用多線程時使用concurrenthashmap,否則可能會遇到一些奇怪的錯誤。這將處理所有對hashmap的同步訪問。 – 2013-02-23 20:28:28