0
Я пытаюсь синхронизировать различные потоки в своем приложении. В основном есть некоторые потоки, которые должны иметь возможность заблокировать приложение от закрытия. Вот что у меня есть:Совместимость Java. Заблокировать приложение от выхода
public class Test{
public static void main(String args[]){
Syncer syncer = new Syncer();
Object o = new Object();
syncer.lockExit(o);
//.. do some stuff//
syncer.unlockExit(o);
}
}
public class Syncer {
private List<Object> l_Exit;
public Syncer() {
l_Exit = new ArrayList<Object>();
}
public synchronized void lockExit(Object o) {
l_Exit.add(o);
}
public synchronized void unlockExit(Object o) {
l_Exit.remove(o);
if (l_Exit.isEmpty()) {
l_Exit.notifyAll();
}
}
public synchronized void waitForExit() {
while (!l_Exit.isEmpty()) {
try {
l_Exit.wait();
} catch (InterruptedException ex) {
Test.log.log(Level.SEVERE, null, ex);
}
}
}
}
Я получаю IllegalMonitorException при запуске syncer.unlockExit (о);
Хм после изменения метода waitForExit() я получил предупреждение от netbeans. Правильно ли этот код? public synchronized void waitForExit() { synchronized (l_Exit) { while (! L_Exit.isEmpty()) { try { l_Exit.wait(); } catch (InterruptedException ex) { CakeLauncher.log.log (Level.SEVERE, null, ex); } } } } – black