Collections
如果对数据结构对的所有访问都始终与获取和释放锁包装在一起(特别是使用静态同步方法进行任何修改),是否有必要使用Java数据结构的专用并发版本(例如,CopyOnWriteArrayList与ArrayList)数据结构)。例如:
public static synchronized Item doIt() {
// remove something from data structure 1
// add the removed item to data structure 2
// return removed item
}
我知道同步方法一次只能执行一个线程来执行更新,但是到某个线程退出该方法时,其他线程是否可以保证看到更新的数据结构,还是我仍然需要专门的并发数据结构来执行那保证?
编辑:
这是我尝试做的一个更好的例子:
private static final List<Item> A;
private static final HashMap<Integer,Item> B;
public static Item doSomething() {
// some stuff ...
Item item = doIt();
// some other stuff ...
return item;
}
private static synchronized Item doIt() {
Item theItem = A.remove( A.size()-1 );
B.put( theItem.getId(), theItem );
return theItem;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句