ConcurrentHashMap与依赖于其线程安全但不依赖于其同步细节的程序中的Hashtable完全可互操作.
我对线程安全与同步细节感到困惑,任何人都能告诉我一个例子吗?
解决方法:
Hashtable使每个方法都同步,并且它是公开可用的信息.例如,您可以从Hashtable继承,添加更多同步方法 – 并且知道您在使用相同的同步机制时大部分都可以.
此外,您的代码可以使用synchronized(myHashTable)块,有效地确保在您处于此块时不会从其他线程调用myHashTable方法.
这就是所有可用的“同步细节”,您可以免费使用(尽管不鼓励使用).
ConcurrentHashMap不是这样的:它是线程安全的(在某种意义上更是如此,例如参见Peter Lawrey的答案)作为Hashtable,但是你没有被告知这个线程安全是如何实现的.因此,您不能滥用或扩展它:您应该按原样使用它.