Если я жду такого состояния (примечание: current
- это AtomicInteger
, а target
- это int
):
while (current.get() < target) {
try {
synchronized (current) {
current.wait();
}
}
catch (InterruptedException ie) {}
}
, тогда синхронизированные должны идти внутрьв то время как (как указано выше) или снаружи, как это?
synchronized (current) {
while (current.get() < target) {
try {
current.wait();
}
catch (InterruptedException ie) {}
}
}
Мой вопрос заключается в том, какова практическая / функциональная разница между двумя вышеупомянутыми частями кода и когда один должен использоваться поверх другого?
EDIT: цикл завершается, когда другой поток выполняет следующую операцию
if (current.incrementAndGet() >= target) {
synchronized (current) {
current.notify();
}
}