ConcurrentHashMap應用注意事項

2021-08-30 14:23:03 字數 703 閱讀 1839

1、public v get(object key)不涉及到鎖,也就是說獲得物件時沒有使用鎖;

2、keyset().iterator()及keys(),獲取的iterator、enumeration變數是單執行緒訪問安全的,多執行緒訪問時要麼生成多個iterator、enumeration(通過呼叫相應的獲取方法),要麼以concurrenthashmap變數為鎖進行同步(synchronized該變數);concurrenthashmap變數是多執行緒訪問安全的,儘管是多執行緒訪問,多數情況下應該沒有鎖爭用;

3、put、remove方法要使用鎖,但並不一定有鎖爭用,原因在於concurrenthashmap將快取的變數分到多個segment,每個segment上有乙個鎖,只要多個執行緒訪問的不是乙個segment就沒有鎖爭用,就沒有堵塞,各執行緒用各自的鎖,concurrenthashmap預設情況下生成16個segment,也就是允許16個執行緒併發的更新而盡量沒有鎖爭用;

4、iterator、enumeration獲得的物件,不一定是和其它更新執行緒同步,獲得的物件可能是更新前的物件,concurrenthashmap允許一邊更新、一邊遍歷,未遍歷到的key一般能放映value更新;

5、有些情況下這種不一致是允許的,如果需要最大的效能、吞吐量,則正好使用concurrenthashmap。

目前只想到能用於快取無關緊要的資訊,對於讀寫 都須同步的操作,竟然還要加synchronized,悲劇的執行緒安全

pytorch fine tuning注意事項

前言 這篇文章算是論壇pytorch forums關於引數初始化和finetune的總結,也是我在寫 中用的算是 最佳實踐 吧。最後希望大家沒事多逛逛論壇,有很多高質量的回答。引數初始化 引數的初始化其實就是對引數賦值。而我們需要學習的引數其實都是variable,它其實是對tensor的封裝,同時...

PHP Open Flash Chart注意事項

1.在html頁面必須src正確的swfobject.js的路徑 可以用firebug檢視絕對路徑是否正確 2.在html頁面必須指定正確的swfobject使用時的open flash chart.swf的位置 可以用firebug檢視絕對路徑是否正確 3.在html頁面必須制定正確的data f...

Spring Hibernate整合注意事項

1 spring jar包 需要額外加入 commons pool 和commons dbcp 若包含 spring 自帶的測試,還需要引入 spring test 2 spring beans.xml 如果使用了 spring annotation 則需要加入以下兩項配置 前提是已經匯入了bean...