我有一些类似于地图的存储空间。我一直在使用synchronized(this)
forget
和put
方法。由于此存储主要用于读取,因此我考虑使用ReentrantReadWriteLock
以获得更好的性能 - 仅锁定put
.
我期望查找性能更好(因为存储内容没有改变)。但是,我的 JMH 测试显示相反:
.benchmarkClassMap3ClassLookup thrpt 20 460.152 7.417 ops/ms
.benchmarkClassMapClassLookup thrpt 20 1196.085 23.635 ops/ms
第一行是使用ReentrantReadWriteLock
. 第二行是原始代码,带有synchronized
. 编辑:测试使用 2 个线程运行。
有没有其他人进行基准测试ReentrantReadWriteLock
?结果不应该不一样吗?还是只有在多线程环境中才会出现阳性结果?
相关:这个。