我正在寻找类似这种语法的东西,即使它不存在。
我想让一个方法作用于一个集合,并且在该方法的生命周期内,确保集合没有被破坏。
所以看起来像:
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
}
}
这是最好的办法吗?
2条答案
按热度按时间czq61nw11#
在这种情况下,最好使用同步列表:
collections api为线程安全提供了同步的 Package 器集合。
对方法体中的列表进行同步将阻止在方法的整个生命周期内需要访问该列表的其他线程。
另一种方法是手动同步对列表的所有访问:
j8yoct9x2#
是的,这是唯一的办法。
相当于:
所以如果你想在其他示例上同步
this
,除了声明synchronized
方法内部的块。