public static void main(String[] args) throws InterruptedException {
Object systemSession = new Object();
Session session = new Session(systemSession);
session.wait();
System.out.println("Sessão Expirada: " + session.isExpired());
}
mas na hora q eu vou compilar,
o console acusa:
Exception in thread "main" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at Horas_Sistema.Session.main(Session.java:110)
Gostaria de saber que exceção é essa
e como que eu faço para utilizar
o método wait para o programa
aguardar 1minuto = 60000 milissegundos?
[quote=ajfilho]Tenta colocar esse wait dentro de um bloco sincronizado.
Se eu não me engano, se não tiver dentro de um bloco ou método sincronizado, ele dispara IllegalMonitorStateException…
Espero ter ajudado!
Abraços![/quote]
Por ora melhor seguir o conselho do thingol. Para conseguir usar wait/notify, deve-se adquirir o “monitor” do objeto em que se está chamando wait/notify. Adquire-se o monitor de um objeto quando se está num bloco de código sincronizado referenciando tal objeto ou adquire-se o monitor de um objeto quando a execução está “dentro” de um método sincronizado desse objeto.
Valeu thingol pela
ajuda era isso mesmo
que eu estava precisando
fazer.
Obrigado pela ajuda também
ajfilho mas eu não sei
direito eu acho que o
método wait só deve
ser usado quando
eu tenho mais de uma thread
não é isso?
No meu caso eu só uso
um processo com uma
thread só que é o main.
Não sei se eu estou
falando alguma bobeira
aqui, mas se eu estiver
errado por favor me corrijam.
Não me lembro de ter usado explicitamente “wait/notify” em um programa. Se preciso de controle complexo entre threads, acabo usando alguma coisa do pacote java.util.concurrent, até porque meu nome não é Doug Lea
Thread.sleep (60000) trava seu programa por 60 segundos. Em vez disso, faça um loop que fique atualizando uma mensagem a cada segundo - alguma coisa como:
System.out.println ("Esperando 60 segundos: ");
for (int i = 0; i < 60; ++i) {
try { Thread.sleep (1000); } catch (InterruptedException ex) {}
System.out.print ("Passaram-se " + i + " segundos..." + "\r");
}
System.out.println ("Os 60 segundos terminaram. Voltando ao trabalho");