请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

数据结构的线程安全问题

Hi bobo 老师,

我看到课程官方 github 的 java 实现中是使用 Vector 来实现 SparseGraph 的。我理解不使用数组是因为它没有动态扩容功能,但是 java 中的 ArrayList 和 Vector 一样都具有动态扩容功能,区别就在于是否是线程安全的。所以想问一下老师:

  1. 这里使用 Vector 而没用 ArrayList 是因为要考虑线程安全问题?
  2. 我们在实现其它数据结构的时候是否都需要考虑线程安全问题?

谢谢!

正在回答

1回答

其实当时我在做这个代码的时候没有想那么多啦,主要是因为这个课程最初使用C++讲的,C++中的动态数组是vector,对应在Java中,我就是用Vector了:)


你说的完全正确,Vector和ArrayList的区别是线程安全。不过通常,我们在实现数据结构的时候,不需要考虑线程安全。因为考虑线程安全,会导致数据结构内部效率的降低。只有我们在明确所需要的数据结构需要在多线程环境下使用,需要顾及线程安全的时候,才考虑这一点:)


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 Poplar_hills #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-02-25 16:13:38
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号