Приоритет потока тестирования. Почему в некоторых случаях потоки с низким приоритетом работают быстрее?
Я пытаюсь проверить 2 потока, один с высоким, а другой с низким приоритетом.
Согласно моим результатам, иногда поток с низким приоритетом быстрее, как это возможно? Я'мы проверили потоки с разными приоритетами, увеличив переменную click внутри каждого потока. Я'Мы также увеличивали и уменьшали время сна, но ничего.
Поскольку я тестировал без тяжелых программ, работающих в фоновом режиме, я решил протестировать с работающим HD-фильмом, но реальных изменений не произошло, потоки всегда имеют одинаковую скорость.
Мой компьютер - Intel i5. Я'м под управлением Windows 7 64 бит, 16 Гб оперативной памяти
Это код: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);
}
}