为什么Java的HashTable是同步的?

用户2488578

使HashTable的方法同步的驱动因素或设计计划是什么?

这个链接说 HashTable 是同步的,因为它的方法是同步的。但是,我想知道方法“为什么”同步的原因?

仅仅是为了提供一些同步功能吗?开发人员可以通过同步技术显式地处理竞争条件。为什么要为 HashTable 提供这个功能?

鬼猫

请记住:这些类是在“很久以前”创建的 - 当您检查Hashtable的 javadoc 时,您会发现它说“自 Java 1.0”;而 HashMap 说的是“1.2”!

那时,Java 正试图与 C 和 C++ 等语言竞争。通过提供独特的卖点,例如“内置并发”。

但是人们很快发现,在多线程环境中使用容器时,可以更好地同步容器!

所以我的(更多是基于意见的)答案是:在这个类最初设计的时候,人们认为“可以被多个线程使用”的要求比“提供最佳性能”更重要。

因为 Java 被“宣传”为:“用它来编写多线程一次编写到处运行的代码”。当提供给人们的默认容器类需要额外的外部包装来真正使他们“多线程”准备好时,这种方法很快就会失败。

这些年来,Java 背后的人们开始明白需要“更细化”的解决方案。因此核心集合类不会同步以避免相应的性能下降。含义:集合的默认设置是“不受保护”;因此,当您的要求是“多线程”正确性时,您必须考虑一下。

顺便说一句,“列表”也是如此:向量是同步的;ArrayList 不是。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Hashmap不同步,为什么Hashmap在内部实现Hashtable(已同步)。

来自分类Dev

为什么 java.util.Properties 扩展 Hashtable<Object, Object> 而不是 Hashtable<String, String>?

来自分类Dev

为什么write(..)方法java.io.Writer是同步的?

来自分类Dev

Java:为什么我的同步输出仍然如此随机

来自分类Dev

如何使Java对象同步?哪种方法更好,为什么?

来自分类Dev

为什么 Java 同步没有按预期工作?

来自分类Dev

为什么外部同步比内部同步快?

来自分类Dev

为什么同步不能同步线程?

来自分类Dev

为什么外部同步比内部同步快?

来自分类Dev

为什么同步SQL“不好”?

来自分类Dev

为什么不同步?

来自分类Dev

为什么在同步中等待?

来自分类Dev

为什么同步SQL“不好”?

来自分类Dev

为什么代码遵循同步?

来自分类Dev

为什么在Netbeans 8中将java.util.Hashtable标记为“过时的集合”?

来自分类Dev

Java Collection中什么同步?

来自分类Dev

为什么未同步的对象比同步的对象性能更好?

来自分类Dev

为什么要同步一个同步列表?

来自分类Dev

为什么未同步的对象比同步的对象性能更好?

来自分类Dev

对象上的Java同步。为什么没有这种僵局?

来自分类Dev

为什么java.util.logging.Formatter中的formatMessage()方法是同步的?

来自分类Dev

为什么我们不能在Java中将整个类声明为已同步?

来自分类Dev

为什么你不应该使用选购的java对象同步

来自分类Dev

减少Java中同步块的范围会意外损坏我的ArrayList,为什么会这样?

来自分类Dev

减小Java中同步块的大小会意外损坏我的ArrayList,为什么会这样?

来自分类Dev

为什么Java编译器在“同步块”之前添加“冗余读取”?

来自分类Dev

为什么这个错误发生在我的 java 同步方法中?

来自分类Dev

为什么Stream.BeginRead()是同步的?

来自分类Dev

为什么同步不起作用?

Related 相关文章

  1. 1

    为什么Hashmap不同步,为什么Hashmap在内部实现Hashtable(已同步)。

  2. 2

    为什么 java.util.Properties 扩展 Hashtable<Object, Object> 而不是 Hashtable<String, String>?

  3. 3

    为什么write(..)方法java.io.Writer是同步的?

  4. 4

    Java:为什么我的同步输出仍然如此随机

  5. 5

    如何使Java对象同步?哪种方法更好,为什么?

  6. 6

    为什么 Java 同步没有按预期工作?

  7. 7

    为什么外部同步比内部同步快?

  8. 8

    为什么同步不能同步线程?

  9. 9

    为什么外部同步比内部同步快?

  10. 10

    为什么同步SQL“不好”?

  11. 11

    为什么不同步?

  12. 12

    为什么在同步中等待?

  13. 13

    为什么同步SQL“不好”?

  14. 14

    为什么代码遵循同步?

  15. 15

    为什么在Netbeans 8中将java.util.Hashtable标记为“过时的集合”?

  16. 16

    Java Collection中什么同步?

  17. 17

    为什么未同步的对象比同步的对象性能更好?

  18. 18

    为什么要同步一个同步列表?

  19. 19

    为什么未同步的对象比同步的对象性能更好?

  20. 20

    对象上的Java同步。为什么没有这种僵局?

  21. 21

    为什么java.util.logging.Formatter中的formatMessage()方法是同步的?

  22. 22

    为什么我们不能在Java中将整个类声明为已同步?

  23. 23

    为什么你不应该使用选购的java对象同步

  24. 24

    减少Java中同步块的范围会意外损坏我的ArrayList,为什么会这样?

  25. 25

    减小Java中同步块的大小会意外损坏我的ArrayList,为什么会这样?

  26. 26

    为什么Java编译器在“同步块”之前添加“冗余读取”?

  27. 27

    为什么这个错误发生在我的 java 同步方法中?

  28. 28

    为什么Stream.BeginRead()是同步的?

  29. 29

    为什么同步不起作用?

热门标签

归档