zhudi1994
千叶藏笙
采纳率100%
2019-09-25 22:28

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

已采纳

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • wojiushiwo945you 毕小宝 2年前

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

    点赞 1 评论 复制链接分享