herdann 2009-11-19 13:15
浏览 282
已采纳

hashmap 同步的问题

=========JDK 5.0 Doc==========
java.util
类 HashMap
java.lang.Object
java.util.AbstractMap
java.util.HashMap
所有已实现的接口:
Serializable, Cloneable, Map
直接已知子类:

LinkedHashMap, PrinterStateReasons

记得以前看书说hashtable同步,map是不同步的。但是今天看java doc.
Hashmap 实现了Serializable接口 就应该是同步的阿?
也许是我理解不对,
为什么hashmap不是?

怎么判断一个类是不是同步呢?

  • 写回答

3条回答 默认 最新

  • lijiepeng 2009-11-20 07:04
    关注

    除了不可变类是自动线程安全的,另外就是在类中带有synchronized关键字的也是为了使这个类变成线程安全的.避免并发问题的两种手段也就这两种,不变性和隔离性,synchronized就是为了实现隔离性,以使并行的访问变为线性的访问.
    如果一个可变类没有一个synchronized关键字,他肯定不是线程安全的,HashMap就是这样的可变类,并且没有synchronized.带有synchronized关键字的可能是线程安全的类型,Hashtable中的好多方法带有synchronized,并且它是线程安全的.

    Java中的Serializable接口和事务中的事务隔离级别Serializable,虽说单词一样,但它们之间基本没关系.
    Java中的Serializable接口是实现一个内存对象保存成磁盘文件并从磁盘文件恢复成内存对象的机制. 事务隔离级别Serializable是实现多个访问共享数据的事务得以线性顺序进行机制的.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题