测试代码:
公共事业域名(字符串[ ]数组)。地图=新地图(;
用户=新用户(1l,“san”,2,“wuhan”,“2”,真);
concurrentmapmap1=newconcurrenthashmap (;
int j=10000;
int i=0;
long a=System.currentTimeMillis (;
wile(ij ) {
对象输出=映射输出(' user,user );
I;
}
long b=System.currentTimeMillis (;
system.out.println ('地图保存需要时间((b-a ) '毫秒) );
i=0;
wile(ij ) {
对象=地图.获取(' use ' I );
I;
}
long c=System.currentTimeMillis (;
system.out.println ('获取地图需要时间((c-b ) '毫秒) );
i=0;
wile(ij ) {
对象输出=映射1 .输出(' user,user );
I;
}
long d=System.currentTimeMillis (;
system.out.println('currmap的保存需要时间((d-c ) '毫秒) );
i=0;
wile(ij ) {
对象=地图1.get (' use ' I );
I;
}
long f=System.currentTimeMillis (;
system.out.println('currmap的获取需要时间((f-d ) '毫秒) );
{1}数据量为1万时,为:
map保存所需的时间除11毫秒1291110最高最低外平均为10.6
除去取得map需要时间的5毫秒5 4 3 4最高最低,平均为4.6
currmap的保存需要18毫秒11~11.11九个小时,除去最高最低,平均取11个小时
currmap除了需要5毫秒的3 5 3 4最高最低外,平均取4.6
数据量为10万时:
map保存时间63毫秒56 57 61 67除67最高最低外平均60.3
map获取时间18毫秒25 18 20 21除最高最低外平均19.6
保存currmap所需的时间除43毫秒49 51 49 54最高最低外平均为49.6
currmap取时间12毫秒14~12十六13,除去最高最低,平均取13
数据量为100万时:
map保存时间346毫秒218 192 211 193除最高最低外平均207.3
获取map所需的时间除406毫秒492 456 549 482最高最低外平均为476.6
currmap保存时间674毫秒697 632 762 214除去最高最低值后的平均667.6
获取currmap所需的时间除131毫秒137 161 155 581最高最低外平均为151
数据量为500万时:
保存map所需的时间平均为3210,不包括2783毫秒3269 3239 3150 3241最高最低
map获取时间729毫秒677 664 669除661最高最低外平均为670
currmap保存时间3036毫秒2721 2848 2678 2733除去最高最低,平均为2767.3
currmap获取时间786毫秒808 2546 771 1879除去最高最低后的平均1157.6
数据量为1000万时为:
map保存时间7803毫秒7786 9094 7168 9756除去最高最低后的平均8227.6
map获取时间6323毫秒1195 3780 4140 4489除去最高最低后的平均4136.3
除去currmap保存时间5057毫秒7021 6895 4986 7231最高最低,平均取6300
获取currmap所需的时间平均为2427.3,不包括4741毫秒1349 1064 5120 1192最高最低
数据量为亿时,内存不足的结论3360
无论数据量小还是数据量大,ConcurrentMap访问的效率都非常高。 也就是说,数据量为500万左右时会发生较大变动。
此外,ConcurrentMap是线程安全的。 推荐ConcurrentMap的密钥和值不能为空