我現在已經在處理1萬個數據,其在全球的HashMap,顯然不應該使用多thread.Today要求我已經嘗試了兩種schames:的Java多線程共享變量的全局地圖
1#除以巨大的hashMap對一些小的hashMap和一些線程進行處理(一個線程處理一個hashMap)。它具有很好的性能。顯然它不需要多線程之間的同步。我想使用多線程來處理相同和巨大的hashMap.I將從已處理的hashmap中刪除項目。我嘗試了各種方法,但失敗了。我的關鍵點是:我可以得到實時hashMap值,當我生成一個新的線程,但所有線程不能通知對方什麼是最新的hashMap當所有線程正在運行。 同步無法解決我的問題。
2#我該如何解決這個問題。感謝高級。
這裏是我的代碼部分:
class DoJob implements Runnable{
private HugeDataHotelFormalMultiShare share = new HugeDataHotelFormalMultiShare();
DoJob(HugeDataHotelFormalMultiShare share){
this.share = share;
}
@Override
public void run() {
testHotelMatchCommonShare(share.origMap);
}
}
爲什麼synchronized不能解決你的問題? –
這看起來像是ConcurrentHashmap的作業。 @見https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html –
當人們不理解線程時,我總是擔心「顯然應該使用多線程」。 – Kayaman