写了一段程序,关于线程的优先级的,但是跑完的结果却是和thinking in java 上的结论却不怎么一样,有高手经过,指点下小弟,谢谢:
package classes;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class SimplePriorities implements Runnable{
private int countDown=5;
private volatile double d;
private int priority;
public SimplePriorities(int a){
this.priority =a;
}
public String toString(){
return Thread.currentThread()+":"+countDown;
}
@Override
public void run() {
Thread.currentThread().setPriority(priority);
while(true){
for (int i = 0; i < 10000; i++) {
d+=(Math.PI+Math.E)/(double)i;
if(i%1000==0)
Thread.yield();
System.out.println(this);
if(--countDown==0)return;
}
}
}
public static void main(String[] args){
ExecutorService exec = Executors.newCachedThreadPool();
for (int i = 0; i < 5; i++) {
exec.execute(new SimplePriorities(Thread.MIN_PRIORITY));
exec.execute(new SimplePriorities(Thread.MAX_PRIORITY));
}
exec.shutdown();
}
}
Thread[pool-1-thread-2,10,main]:5
Thread[pool-1-thread-2,10,main]:4
Thread[pool-1-thread-2,10,main]:3
Thread[pool-1-thread-2,10,main]:2
Thread[pool-1-thread-2,10,main]:1
Thread[pool-1-thread-2,10,main]:5
Thread[pool-1-thread-2,10,main]:4
Thread[pool-1-thread-2,10,main]:3
Thread[pool-1-thread-2,10,main]:2
Thread[pool-1-thread-2,10,main]:1
Thread[pool-1-thread-2,10,main]:5
Thread[pool-1-thread-2,10,main]:4
Thread[pool-1-thread-2,10,main]:3
Thread[pool-1-thread-2,10,main]:2
Thread[pool-1-thread-2,10,main]:1
Thread[pool-1-thread-2,10,main]:5
Thread[pool-1-thread-2,10,main]:4
Thread[pool-1-thread-2,10,main]:3
Thread[pool-1-thread-2,10,main]:2
Thread[pool-1-thread-2,10,main]:1
Thread[pool-1-thread-5,1,main]:5
Thread[pool-1-thread-5,1,main]:4
Thread[pool-1-thread-5,1,main]:3
Thread[pool-1-thread-5,1,main]:2
Thread[pool-1-thread-5,1,main]:1
Thread[pool-1-thread-6,1,main]:5
Thread[pool-1-thread-6,1,main]:4
Thread[pool-1-thread-6,1,main]:3
Thread[pool-1-thread-7,1,main]:5
Thread[pool-1-thread-7,1,main]:4
Thread[pool-1-thread-4,10,main]:5
Thread[pool-1-thread-3,1,main]:5
Thread[pool-1-thread-3,1,main]:4
Thread[pool-1-thread-3,1,main]:3
Thread[pool-1-thread-3,1,main]:2
Thread[pool-1-thread-3,1,main]:1
Thread[pool-1-thread-1,1,main]:5
Thread[pool-1-thread-4,10,main]:4
Thread[pool-1-thread-4,10,main]:3
Thread[pool-1-thread-4,10,main]:2
Thread[pool-1-thread-1,1,main]:4
Thread[pool-1-thread-1,1,main]:3
Thread[pool-1-thread-1,1,main]:2
Thread[pool-1-thread-1,1,main]:1
Thread[pool-1-thread-6,1,main]:2
Thread[pool-1-thread-6,1,main]:1
Thread[pool-1-thread-7,1,main]:3
Thread[pool-1-thread-4,10,main]:1
Thread[pool-1-thread-7,1,main]:2
Thread[pool-1-thread-7,1,main]:1