java - 在 Java 中同步对象

标签 java thread-synchronization java-collections-api

我正在寻找类似于此语法的东西,即使它不存在。

我想让一个方法作用于一个集合,并且在该方法的生命周期内,确保集合没有被弄乱。

所以它看起来像:

private void synchronized(collectionX) doSomethingWithCollectionX() {
    // do something with collection x here, method acquires and releases lock on
    // collectionX automatically before and after the method is called
}

但是,恐怕唯一的方法是:

private void doSomethingWithTheCollectionX(List<?> collectionX) {
    synchronized(collectionX) {
        // do something with collection x here
    }
}

这是最好的方法吗?

最佳答案

是的,这是唯一的方式。

private synchronized myMethod() {
    // do work
}

相当于:

private myMethod() {
    synchronized(this) {
         // do work
    }
}

因此,如果您想在 this 之外的其他实例上进行同步,您别无选择,只能在方法内声明 synchronized block 。

关于java - 在 Java 中同步对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27952922/

相关文章:

java - jms 和不同版本的枚举

c - 我怎样才能按这个顺序执行3个线程呢?

C++ 多线程同步

java - Map<String, Integer> 和 Map<Integer ,String> 排序

java - 列表与 Arrays.asList 构造的列表的区别有惊人的结果。为什么?

java - android 的 Bundle 在功能上不等同于 Map 吗?

java - 如何使用 Jackson 映射动态 json 属性名称以进行 Spring Rest 模板请求

java - 使用 Java Web 服务从 IP 地址派生国家/地区代码

java - 对单个静态整数索引进行多次读写会导致索引越界