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

我想让一个方法作用于一个集合,并且在该方法的整个生命周期中,确保不弄乱该集合。

这样看起来像:

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块外,别无选择。

10-08 07:06