我有一些類似於地圖的存儲。我一直使用synchronized(this)
爲get
和put
方法。由於此存儲大多用於讀取,因此我想使用ReentrantReadWriteLock
以獲得更好的性能 - 僅鎖定put
。ReentrantReadWriteLock讀鎖的性能?
我預計查找性能會更好(因爲存儲內容沒有改變)。然而,我的JMH測試示出了相反:
.benchmarkClassMap3ClassLookup thrpt 20 460.152 7.417 ops/ms
.benchmarkClassMapClassLookup thrpt 20 1196.085 23.635 ops/ms
第一行是使用ReentrantReadWriteLock
的代碼。第二行代碼爲。編輯:測試運行2線程。
是否有其他人以基準測試ReentrantReadWriteLock
?不應該是不同的結果?或者只有在多線程環境中才能看到積極的結果?
相關:this。
你用什麼jdk? – dcernahoschi 2014-09-28 17:48:22
java版本「1.7.0_67」 – igr 2014-09-28 17:50:09
雖然你的數據只是像一張地圖,你是否有ConcurrentHashMap?至少爲了比較。 – 2014-09-28 18:16:04