Criação de um Time Out em Java

3 respostas
O

Pessoal ,
gostaria de criar um time out em java , ou seja,
quando executar um trecho de código quero que ele permaneça em um loop por um determinado periodo de tempo. veja bem não quero utilizar threads, usando sleep.

3 Respostas

cv1

Nao existe outro jeito de fazer isso sem usar uma Thread pra notificar a outra de que ela deve parar de executar depois de um tempo determinado. Pra dar uma forcinha, voce talvez ache interessante a classe TimerTask.

T

Se você usar Thread.interrupt (que interrompe uma thread que esteja fazendo I/O) você pode ter uma surpresa desagradável - é que isso até funciona em Unix/Linux, mas não funciona direito em Windows, mesmo nos casos em que deveria funcionar. (Na verdade não funciona direito em Windows porque o próprio Windows não dá um suporte muito adequado a esse tipo de coisas.)

O melhor negócio ainda é examinar uma variável do tipo

private volatile boolean flag;

e checar o flag dentro do seu loop.

T

Outra forma é fazer o seguinte:

Digamos que você queira fazer algo muito simples, como ficar fazendo uma soma até completar pelo menos 100 milissegundos.

Você pode fazer algo como:

long t0 = System.currentTimeMillis();
long tempo = 100; // ms
double soma = 0.0;
while (System.currentTimeMillis() - t0 < tempo) {
    soma += 0.1;
}

Talvez seja isso o que você quer.

Criado 25 de abril de 2005
Ultima resposta 25 de abr. de 2005
Respostas 3
Participantes 3