Acontece o seguinte, o laço While fica executando, ok, óbvio, mas como calcular quantas vezes ele vai ser executado em um minuto? Como calcular a carga de processamento desse while? Como isso funciona?
Bem, não sei se fui bem claro, mas a questão básica é:
Em laços, como calculo quanto tempo ele demora a ser executado? Como funciona isso?
longinicio=System.currentTimeMillis();for(inti=0; i < 1000; i++) {System.out.println(i)
}
longfim=System.currentTimeMillis();System.out.println(fim-inicio); //obtem em milisegundos quanto tempo o laço acima foi executado
Andre_Brito
Thiago,
Acho que ele não quer saber em quanto tempo 1000 vezes são executadas, mas sim saber quantas vezes ocorre a repetição ali do while em 1 minuto.
AUser,
Você pode colocar uma verificação. Antes do while, você coloca o tempo. Dentro do while, você verifica se já passou um minuto. Se não passou, você continua e incrementa um contador. Se passou de 1 minuto, dá um break e imprime o contador. Essa definitivamente não é a melhor maneira de fazer (essa verificação pode aumentar o tempo de execução, por mais que seja pouco), mas é um jeito. Acredito que tenha alguma forma usando threads, mas acredito o primeiro ser o jeitão mais fácil.
Abraço.
J
juliocbq
O usa o profiler do netbeans para calcular o tempo de execução da thread. É bem preciso.
maior_abandonado
a primeira ideia que me vem a cabeça de como fazer isso é vc criar 2 threads, e um boolean sendo variavel global:
a primeira thread fazendo esse loop, e incrementando um inteiro que obviamente tenha sido criado fora do loop;
a segunda thread vai muda o valor desse boolean para false depois de um sleep (1000)…
ai o loop vc muda para while (suaVariavelBoolean) (para que saia quando a outra thread tenha dito q passo 1 segundo)
quando sair do loop vc imprime o inteiro que estava sendo incrementado… (e posta ai o resultado por favor q eu to curioso…xD)
só dando um edit básico…
não sei se é método mais eficiente de se fazer isso mais lógicamente esta certo