在编制程序的过程中,数据结构是非常重要的,根据适合的场景选用正确的数据结构无疑是重中之重。在Java编程中,有人总轻信HashTable是线程安全的,比HashMap少去了自己人工加锁的步骤。
但是,如果场景不正确,例如HashTable使用的场景中如果遭遇到“遍历”或多于一步使用HashTable的接口,则HashTable的隐性锁的问题,会让一般维护代码,或走查代码深度不足的情况下,排除不了多线程死锁的问题,还不如使用明确的synchronized指明这里使用了锁,“虎出没”。
在这里着重指出的是HashTable在遭遇遍历和多于一步使用HashTable的接口,则HashTable所宣称的线程安全的就很容易被攻破,而且不容易别人查看代码看出来这里会遭遇锁的问题,莫轻信