我正在尝试测试 2 个线程,一个具有高优先级,另一个具有低优先级。
根据我的结果,有时低优先级线程更快,这怎么可能?我已经通过在每个线程内增加一个点击变量来测试不同的优先级线程。我也增加和减少了睡眠时间,但没有。
由于我没有在后台运行繁重的程序进行测试,因此我决定在运行高清电影的情况下进行测试,但仍然没有真正的变化,线程始终保持相同的速度。
我的电脑是英特尔 i5。我正在运行 Windows 7 64 位,16GB RAM
这是代码:
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);
}
}