1樓:
有2種辦法讓hashmap執行緒安全,分別如下: 方法一:通過collections.
synchronizedmap()返回乙個新的map,這個新的map就是執行緒安全的。 這個要求大家習慣基於介面程式設計,因為返回的並不是hashmap,而是乙個map的實現。 方法二:
重新改寫了hashmap,...
如何實現執行緒安全的hashmap
2樓:匿名使用者
有2種辦法讓hashmap執行緒安全,分別如下:
方法一:通過collections.synchronizedmap()返回乙個新的map,這個新的map就是執行緒安全的。
這個要求大家習慣基於介面程式設計,因為返回的並不是hashmap,而是乙個map的實現。
方法二:重新改寫了hashmap,具體的可以檢視java.util.concurrent.concurrenthashmap. 這個方法比方法一有了很大的改進。
3樓:匿名使用者
public class maptest catch (interruptedexception ex)
system.out.println(iterator.nextelement());}}
}).start();
new thread(new runnable() catch (interruptedexception ex)
system.out.println(iterator.nextelement());}}
}).start();}}
這是沒有異常**
public class maptest catch (interruptedexception ex)
system.out.println(iterator.next());}}
}).start();
new thread(new runnable() catch (interruptedexception ex)
system.out.println(iterator.next());}}
}).start();}}
這裡是有異常**,iterator 時產生異常的主要原因,iterator建立的時候會拿到建立時容器的容量,乙個整形資料。 讀取的時候就拿這個容量資料先去檢查是不是和當前實際容量相等,如果不相等就concurrentmodificationexception異常,相等就開始讀資料,所謂執行緒安全就是乙個執行緒在使用iterator 讀資料的時候,另外執行緒往裡加資料,結果就出現iterator 儲存的容器容量和當前實際容量不等了,就不安全了。
而在hashtable中使用了enumeration這個執行緒安全的物件,就是說在另外的執行緒裡加東西的時候他會知道當前容器已經改變,所以使用他是執行緒安全的。
如果樓主還不明白去開下源**就知道了。
4樓:匿名使用者
map m = collections.synchronizedmap(new hashmap());即可
5樓:匿名使用者
如果樓主只是要執行緒安全的功能的話..
可以考慮用
java.util.concurrent.concurrenthashmap類.這是乙個執行緒安全的hashmap類.
或者hashtable也行(注意大小寫)
莫非樓主是要仿照hashmap自創乙個執行緒安全的hashmap類?..
6樓:day忘不掉的痛
直接用hashtable,hashtable執行緒安全。
我一般都會hashmap凡是在乙個方法內部new並且不傳到方法外面的基本上可以用hashmap,執行緒不安全的時候用currenthashmap。
比如類屬性是map或者靜態屬性map而且會在不同的執行緒併發執行操作map時。
7樓:匿名使用者
hashtable不就可以嗎。
易語言多執行緒如何使用,易語言如何使用多執行緒,乙個指令碼控制多個視窗
版本 2 支援庫 ethread 程式來 集 視窗程自序集1 程式集變數 許可 證,整數bai 型.子程式 啟動du視窗 建立完畢zhi許可證 建立進dao入許可證 子程式 啟動視窗 將被銷毀 刪除進入許可證 許可證 子程式 按鈕1 被單擊 啟動執行緒 執行緒處理資料,子程式 執行緒處理資料 進入許...
java中多執行緒在多核cpu中是真的同時執行嗎
如果是單核cpu,在某個時間點只能執行乙個執行緒,但是多核cpu你可以理解為多個單核cpu,當然可以同時執行多個執行緒啦。多核心cpu在同一時刻真的能同時執行多個執行緒嗎?多核心cpu是真正意義上的多個物理cpu嗎?與超執行緒cpu在邏輯上模擬雙核不同,多核cpu每個核心都可以獨立執行乙個執行緒,是...
c 多執行緒程式設計要用到哪些庫?如何編譯這些庫
千萬別以為現在的c 沒有原生的多執行緒庫 openmp 是乙個多執行緒庫,不過他還需要編譯器的支援,好在現在絕大多數都已經支援 這個可能是目前最流行的原生多執行緒庫了 c 的標準頭process.h 太老的沒有,2002年後的基本都有 中有操作程序和執行環境的函式,能實現簡單的程序級或執行緒級並行操...