Ultimamente tenho usado loops com números grandes para imprimir Hello World
:
int counter = 0;
while(true) {
//loop for ~5 seconds
for(int i = 0; i < 2147483647 ; i++) {
//another loop because it's 2012 and PCs have gotten considerably faster :)
for(int j = 0; j < 2147483647 ; j++){ ... }
}
System.out.println(counter + ". Hello World!");
counter++;
}
Entendo que essa é uma maneira muito boba de fazer isso, mas eu nunca usei nenhuma biblioteca de timer em Java ainda. Como alguém modifica o item acima para imprimir a cada 3 segundos?
Respostas:
Você também pode dar uma olhada
Timer
eTimerTask
classes que você pode usar para agendar sua tarefa para ser executada a cadan
segundos.Você precisa de uma classe que estenda
TimerTask
e substitua opublic void run()
método, que será executada toda vez que você passar uma instância dessa classe para otimer.schedule()
métodoAqui está um exemplo, que imprime a
Hello World
cada 5 segundos: -fonte
schedule
método 2-param será executado uma vez após o atraso especificado. O 3-paramschedule
ouscheduleAtFixedRate
precisaria ser usado.ExecutorService
para essas tarefas. Essa é realmente uma grande melhoria em relação à API de threads tradicional. Só não o usei no momento da resposta.Timer timer = new Timer(true);
deve ser definidotrue
como um daemon. A menos que você queira que o timer ainda esteja em execução após o fechamento do aplicativo.Se você deseja executar uma tarefa periódica, use a
ScheduledExecutorService
. ScheduledExecutorService.scheduleAtFixedRate, especificamenteO código:
fonte
TimerTask
variante. Curiosamente, notei que a resposta aceita não está correta: \ A idade das duas APIs à parte,ScheduledExecutorService
é simplesmente mais intuitivamente declarativa. O uso deTimeUnit
como parâmetro torna muito mais claro o que está ocorrendo. Longe vão os dias do código5*60*1000 // 5 minutes
.Runnable helloRunnable = () -> { /*code */ };
que é ainda mais bonito;)Tente fazer isso:
Esse código será executado no console do Hello World a cada 5000 milissegundos ( 5 segundos). Para obter mais informações, leia https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html
fonte
Eu descobri com um temporizador, espero que ajude. Eu usei um timer de
java.util.Timer
eTimerTask
do mesmo pacote. Ver abaixo:fonte
Você pode usar
Thread.sleep(3000)
dentro do loop.Nota: Isso exigirá um
try/catch
bloco.fonte
loop infinito é criado A tarefa do agendador de anúncios é configurada.
fonte
A maneira mais fácil seria definir o segmento principal para dormir 3000 milissegundos (3 segundos):
Isso interromperá o encadeamento pelo menos X milissegundos. O encadeamento pode estar dormindo mais tempo, mas isso depende da JVM. A única coisa garantida é que o encadeamento durará pelo menos esses milissegundos. Dê uma olhada no
Thread#sleep
documento:fonte
O uso
java.util.Timer
e oTimer#schedule(TimerTask,delay,period)
método o ajudarão.fonte
Esta é a maneira simples de usar o thread em java:
fonte
O que ele disse. Você pode lidar com as exceções da maneira que desejar, mas Thread.sleep (milissegundos); é o melhor caminho a seguir.
fonte
Aqui está outra maneira simples de usar a interface Runnable no Thread Constructor
fonte
Adicionar
Thread.sleep
fonte
Para aplicativos pequenos, é bom usar o Timer e o TimerTask, como mencionou Rohit, mas em aplicativos da Web eu usaria o Quartz Scheduler para agendar trabalhos e realizar trabalhos periódicos.
Veja os tutoriais para agendamento de quartzo.
fonte
fonte