java vector 和线程安全

标签 java vector multithreading thread-safety

我想知道这段代码是否会带来任何麻烦:

我有一个在多个线程之间共享的 vector 。每次线程必须从 vector 中添加/删除内容时,我都会在 synchronized block 下进行。但是,主线程有一个调用:

System.out.println("the vector's size: "+ vec.size());

这不是同步

这会引起麻烦吗?

最佳答案

所有 Vector 方法本身都是同步的,因此只要您只围绕单个方法进行同步,您自己的同步就没有必要。如果您有多个相互依赖的方法调用,例如像 vec.get(vec.size()-2) 这样的东西来获取倒数第二个元素,你必须使用自己的同步,否则 vector 可能会在 vec.size() 和 vec 之间改变.get().

关于java vector 和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1658697/

相关文章:

java - C++ 或 Java 中的 Linux 守护进程?

java - Android中的保留字列表

vector - 游戏敌人向玩家移动

c++ - 类实例线程亲和性对其数据有影响吗?

java - 如何在不添加 IE 驱动程序或 Chrome 驱动程序的情况下启动已安装的浏览器?

java - 接口(interface)与 Final 类存储最终变量

c++ - 初始化 vector 时出现令人讨厌的错误

c# - 从 C# 调用托管 C++ 中的 vector

c# - 如何安全地使用 ADO.NET IDbConnection 和 IDbCommand 并发执行多个数据库命令?

c# - 有没有办法简单地返回一个 BlockingCollection