Java синхронизированный список для цикла

Документация по синхронному списку утверждает, что

обязательно, чтобы пользователь вручную синхронизировал в возвращенном списке при итерации по нему:

List list = Collections.synchronizedList(new ArrayList());
...
synchronized(list) {
    Iterator i = list.iterator(); // Must be in synchronized block
    while (i.hasNext())
    foo(i.next());
}

несоблюдение этого совета может привести к неопределенному поведению.

Это кажется довольно ясно Но я просто хотел подтвердить, что для каждого цикла запрещен. Например, я не могу сделать что-то вроде как следует правильно?

List<MyType> list = Collections.synchronizedList(new ArrayList(<MyType>));
...
synchronized(list){
    for(MyType m : list){
        foo(m);
        m.doSomething();
    }
}
18
задан user927476 7 September 2011 в 14:53
поделиться