2011年2月16日

知道为啥HashMap里面的数组size必须是2的次幂?

摘要: 最近在写一个简易的分离锁的类:要求:对不同的Key进行hash得到一个Lock,并要求对锁映射的概率差不多。比如,160个Key,分布到16个锁上,大概有10个Key是映射到同一个锁上的,只要这样并发效率才会高。用法:本来认为用HashMap的hash算法就能够将 达到上述的要求,结果测试的时候吓了一跳。测试代码:结果:1000个随机key的hash只是映射到8个Lock上,而不是平均到50个Lock上。而且是固定分布到0,1,16,17,32,33,48,49的数组下标对应的Lock上面,这是为什么呢?如果改为:结果:1000个随机key的hash 映射到32个Lock上,而且基本上是平均分 阅读全文

posted @ 2011-02-16 14:32 NanguoCoffee 阅读(3374) 评论(0) 推荐(1) 编辑

导航