Допустим, у меня есть код ниже
public class ContinueIfCannotLock implements Runnable
{
static List<LockingObject> lockObjects = new ArrayList();
@Override
public void run()
{
for(LockingObject obj : lockObjects)
{
synchronized ( obj )
{
// do things here
}
}
}
}
, а объект LockingObject является просто и пустым классом.Также предположим, что перед запуском этих потоков у нас есть 100 объектов в списке LockingObject.Итак, как я могу позволить потоку перейти к следующему объекту в списке, если он не может получить блокировку для текущего элемента.Так что никакой поток (по крайней мере, пока все объекты не заблокированы потоком) не ожидает внутри цикла.