Testando a prioridade do encadeamento. Como, em alguns casos, os threads de baixa prioridade são mais rápidos?
Estou tentando testar 2 threads, um com alta e outro com baixa prioridade.
De acordo com os meus resultados, por vezes, o segmento de baixa prioridade é mais rápido, como isso é possível? Eu testei os diferentes segmentos de prioridade, incrementando uma variável de clique dentro de cada thread. Eu também aumentei e diminuí o tempo de sono, mas nada.
Como eu estava testando sem programas pesados rodando em segundo plano, decidi testar com um filme em HD rodando, mas ainda sem mudanças reais, as threads sempre têm a mesma velocidade.
Meu PC é um Intel i5. Estou executando o Windows 7 de 64 bits, 16 GB de RAM
Este é o código:class clicker implements Runnable{
long click =0;
Thread t;
private volatile boolean running = true;
clicker(int p){
t=new Thread(this);
t.setPriority(p);
}
public void run(){
while(running)
click++;
}
public void stop(){
running = false;
}
public void start(){
t.start();
}
}
class HiLoPri {
public static void main(String args[]){
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
clicker hi=new clicker(Thread.NORM_PRIORITY+4);
clicker lo=new clicker(Thread.NORM_PRIORITY-4);
lo.start();
hi.start();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
lo.stop();
hi.stop();
try {
hi.t.join();
lo.t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("LO: "+lo.click);
System.out.println("HI: "+hi.click);
}
}