herdann
2009-11-19 13:15 阅读 280
已采纳

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 lijiepeng 2009-11-20 07:04

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

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

    点赞 评论 复制链接分享
  • lijiepeng lijiepeng 2009-11-20 07:04

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

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

    点赞 评论 复制链接分享
  • lijiepeng lijiepeng 2009-11-20 07:06

    我晕,论坛又出问题了?? 我发了一次,显示成两次...

    点赞 评论 复制链接分享

相关推荐