MST

星途 面试题库

面试题:Java中Hashtable如何实现线程安全

在Java里,Hashtable是线程安全的,简单阐述一下它实现线程安全的基本原理是什么?
31.4万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

实现原理

  1. 方法同步:Hashtable的大部分关键方法,如putgetremove等,都被声明为synchronized。这意味着当一个线程访问这些方法时,会自动获取对象的锁。其他线程如果想要访问这些同步方法,必须等待当前持有锁的线程释放锁,从而保证了线程安全。例如:
public synchronized V put(K key, V value) {
    // 方法体
}
  1. 内部数据结构的保护:由于这些方法在操作Hashtable内部的数据结构(如哈希表数组等)时是同步的,所以多个线程并发访问时不会出现数据竞争,避免了诸如数据不一致、丢失更新等问题。

这种基于synchronized关键字的同步机制虽然简单直接,但在高并发场景下,可能会因为锁竞争严重而导致性能下降,因为同一时间只有一个线程能访问关键方法。