千叶藏笙
2019-09-25 22:28
采纳率: 100%
浏览 422
已采纳

为什么与Enumeration相比,Iterator更加安全

最近看到面试题里说到Enumeration与Iterator区别时,都有一条后者更加安全,只说Iterator遍历时,其他线程无法调用,但是它是怎样实现的呢?
Enumeration只能用来遍历Vector和hashtable,这两个集合都是线程安全,底层源代码很多方法都被sychronized锁住了的,为什么这样的集合在遍历时,能被其他线程调用呢?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 毕小宝 2019-09-26 09:42
    已采纳

    这种说法貌似不太对吧,枚举类是不可变类,而迭代器可以在迭代时通过 remove 方法删除元素的,虽然它有同步,但是还是允许多线程的,某种程度上还不是安全的。
    而枚举类即使是多线程操作,也不会改变其属性,肯定是线程安全。

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题