優先度の高いスレッドと優先度の低いスレッドの 2 つのスレッドをテストしようとしています。
私の結果によると、優先度の低いスレッドの方が速い場合がありますが、これはどのように可能ですか? 各スレッド内でクリック変数をインクリメントすることにより、さまざまな優先度のスレッドをテストしました。睡眠時間も増減しましたが、何もありません。
バックグラウンドで重いプログラムを実行せずにテストしていたので、HD ムービーを実行してテストすることにしましたが、それでも実際の変化はなく、スレッドは常に同じ速度です。
私のPCはIntel 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);
}
}