Como pausar na hora do café?

9 respostas
A

Olá turma!

Se eu fizer: FOR (INT I = 0; I <100000, I++) { }
Vcs vão deduzir que eu estou tentando simular um delay() isto é, uma pausa de alguns segundos para minha aplicação…
E então eu pergunto:
Existe uma função similar ao delay() do pascal no java???
Pois tentei colocar um loop demorado, mas não pára nem por 1 segundo.
Mas vou logo avisando: Não me interesso por janelinhas de diálogo como solução de interrupção da aplicação, certinho!

Agradeço a atenção! :eek:

9 Respostas

A

Olá!

Então, eu já havia pesquisado sobre thread, mas não consegui solucionar
meu problema, pois thread serve para escalonar vários processos
ao mesmo tempo e o que eu quero é uma simples parada de alguns segundos.
Thread exige herança e como eu já herdei JApplet, não poderei fazer
herança múltipla.
Não sei se estou complicando, mas quando uso:
Thread.sleep(1000);
ao compilar o erro gerado é:
“Unreported exception java.lang.InterruptedException; must be caught
or declared to be thrown”
:?:

Será que java não possui uma simples parada de tempo?
Eu nuca ouvi falar, para dizer a verdade!!
Grata!
Se alguém souber peço ajuda e agradeço já!
Até mais!

C

Olá,

declara a exceção java.lang.InterruptedException no final do método …

ex.:

public void dorme() throws java.lang.InterruptedException {



}

[]s

B

“Athena”:
Olá!

Então, eu já havia pesquisado sobre thread, mas não consegui solucionar
meu problema, pois thread serve para escalonar vários processos
ao mesmo tempo e o que eu quero é uma simples parada de alguns segundos.
Thread exige herança e como eu já herdei JApplet, não poderei fazer
herança múltipla.
Não sei se estou complicando, mas quando uso:
Thread.sleep(1000);
ao compilar o erro gerado é:
“Unreported exception java.lang.InterruptedException; must be caught
or declared to be thrown”
:?:

Será que java não possui uma simples parada de tempo?
Eu nuca ouvi falar, para dizer a verdade!!
Grata!
Se alguém souber peço ajuda e agradeço já!
Até mais!

Isso está ocorrendo pq ao utilizar o metodo .sleep() ele pode lançar uma exceção … por isso vc é obrigado a tratar esse POSSIVEL evento … ou apenas “levanta-lo” throws InterruptedException… ficou claro ?

H

try { Thread.sleep(3000); } catch (InterruptedException e) { }

resolvido o problema.
Se vc não estiver utilizando outro thread ou se o outro thread não chamar interrupt(), então esta exception não será lançada.

flw.

A

Olá e Muito obrigada por conseguir solucionar meu problema!
Coloquei as instruções exatamente como me passou e funcionou!

Valeu a todos!!!
:lol:

M

Er… Sem querer ser chato (mas já sendo), declarar um método levantando uma exceção que provavelmente nunca vai ser levantada é bobagem e segundo os livros de java, o código não fica muito bem estruturado (nesses casos).

Portanto o que recomendo é o seguinte:

try{

Thread.sleep( 2000); //2 segundos

}catch( InterruptedException e){}

Com este tipo de instrução, seu método não precisa ser declarado como levantando a exceção (pois é tratada diretamente no código do método) e você não precisa mais usar o try para chamar um método que levanta uma exceção que não tem muito a ver com a lógica de negócios…

Espero não ter confundido… :slight_smile:

Att

B

“morcegao”:
Er… Sem querer ser chato (mas já sendo), declarar um método levantando uma exceção que provavelmente nunca vai ser levantada é bobagem e segundo os livros de java, o código não fica muito bem estruturado (nesses casos).

Portanto o que recomendo é o seguinte:

try{

Thread.sleep( 2000); //2 segundos

}catch( InterruptedException e){}

Com este tipo de instrução, seu método não precisa ser declarado como levantando a exceção (pois é tratada diretamente no código do método) e você não precisa mais usar o try para chamar um método que levanta uma exceção que não tem muito a ver com a lógica de negócios…

Espero não ter confundido… :slight_smile:

Att

É sempre bom tratar exceções… é uma boa pratica !

M

dentro de um laço while esse codigo nao funciona…
ele acumula os sleeps e no final apresenta o estado final da tela… alguma dica? estou usando o while para ler instruçoes de um vetor… e preciso ver cada instrução sendo efetuada… de tempo em tempo…
obrigado

N

Dê uma olhada em Thread.sleep(time)

T+

Criado 24 de agosto de 2004
Ultima resposta 24 de ago. de 2004
Respostas 9
Participantes 7