不一样。虽让HashTable和ConcurrentHashMap的线程都是安全的,但是HashTable效率较低,因为HashTable是使用Synchronized的,所有线程竞争同一把锁;erconcurrentHashMap线程安全而且效率高,依靠其包含的segment数组,将数据分段储存,给每一段数据上一把锁。
segment数组:
static class Segment<K,V> extends ReentrantLock implements Serializable {
private static final long serialVersionUID = 2249069246763182397L;
final float loadFactor;
Segment(float lf) { this.loadFactor = lf; }
}