HashMap和HashTable到底该如何选择?
土圭垚 2012-08-03 10:26:20 hashtable跟hashmap的区别:
hashtable是线程安全的,即hashtable的方法都提供了同步机制!(这一点是不是很影响性能?)
hashmap不是线程安全的,即不提供同步机制。(在多线程访问是不是会有问题?)
hashtable不允许插入空值,hashmap允许!
现在项目中的问题是,根据当前的订单号调用银行的转账接口,由于性能问题我不能将方法synchronized,因为接口本身速度就不快,为了防止重复提交,我在转账接口中设置了一个全局的集合,用的是HashMap,就是当某一个订单号进入这个方法时,先判断订单号是否在Map集合中,不在我将订单号保存在Map集合中,然后调用转账接口,当这比交易走完了,将订单号从集合中移除。如果订单号在Map集合中将直接返回。以前一直没出现过问题,但是昨天,客户出现了重复交易。是不是我用的hashMap不是线程安全的所导致的,如果我换成了hashTable是不是能解决这个问题?
还有就是hashMap和hashTable在性能上是不是有很大的差别?
还有没有别的解决办法?或者我这方法根本不可取?请各位指点一下。。。谢谢。。。。