跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Vector 的 get 方法为什么也要同步呢?
未分類
4 2 月 2021

Vector 的 get 方法为什么也要同步呢?

Vector 的 get 方法为什么也要同步呢?

資深大佬 : brucefu 1

不修改数据也要同步方法吗?不同步有问题?可见性问题? public synchronized E get(int index) { if (index >= elementCount) throw new ArrayIndexOutOfBoundsException(index);

    return elementData(index); } 

大佬有話說 (10)

  • 資深大佬 : yRebelHero

    如果其他线程在该线程获取链表之后变更了链表呢?

  • 資深大佬 : yRebelHero

    对不起,是数组,脑抽了一下。

  • 資深大佬 : palmers

    是 可见性问题 因为内部数组没有使用 volatile 修饰, 多线程下公用实例就会有获取到错误的数据的可能性

  • 資深大佬 : nicocho

    @yRebelHero 是这样的,但是 vector 不是基于数组的么。

  • 資深大佬 : nicocho

    @yRebelHero 最近在复习数据结构,对这些有点执拗 , 哈哈

  • 資深大佬 : 340244120w

    并发编程实践 3.1.3

    锁不仅仅是关于同步与互斥的,也是关于内存可见的。为了保证所有线程都能 够看到共享的、可变变量的最新值,读取和写入线程必须使用公共的锁进行同步。

  • 資深大佬 : kzaemrio

    因为你无法确定是否会出现多线程修改了数据,多线程访问可能获取不同的结果

    如果能确定线程安全,就该用 ArrayList 而不是 Vector

  • 資深大佬 : yRebelHero

    @nicocho 我下面马上更正了一下,刚开始的时候脑抽打错了。

  • 主 資深大佬 : brucefu

    @kzaemrio 你在巴巴什么,八股文背多了吧

  • 資深大佬 : spinecho

    Vector 这玩意只有在面试中才用吧。你们写代码用 Vector 吗?好奇

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具