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...