package thread;
import java.util.concurrent.*;
public class priority  implements Runnable{
private int countdown=5;
private volatile double d;
private int priority;
public priority(int p){
this.priority=p;
}
public String toString(){
return Thread.currentThread()+":"+countdown;
}
public void run(){
Thread.currentThread().setPriority(priority);
while(true){
for(int i=1;i<100000;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 priority(Thread.MIN_PRIORITY));
exec.execute(new priority(Thread.MAX_PRIORITY));
exec.shutdown();
}
}
输出是,我的机器运行几次结果还都不一样.
Thread[pool-1-thread-4,1,main]:5
Thread[pool-1-thread-2,1,main]:5
Thread[pool-1-thread-3,1,main]:5
Thread[pool-1-thread-1,1,main]:5
Thread[pool-1-thread-6,10,main]:5
Thread[pool-1-thread-4,1,main]:4
Thread[pool-1-thread-2,1,main]:4
Thread[pool-1-thread-5,1,main]:5
Thread[pool-1-thread-3,1,main]:4
Thread[pool-1-thread-1,1,main]:4
Thread[pool-1-thread-6,10,main]:4
Thread[pool-1-thread-4,1,main]:3
Thread[pool-1-thread-2,1,main]:3
Thread[pool-1-thread-5,1,main]:4
Thread[pool-1-thread-3,1,main]:3
Thread[pool-1-thread-6,10,main]:3
Thread[pool-1-thread-1,1,main]:3
Thread[pool-1-thread-4,1,main]:2
Thread[pool-1-thread-2,1,main]:2
Thread[pool-1-thread-5,1,main]:3
Thread[pool-1-thread-6,10,main]:2
Thread[pool-1-thread-3,1,main]:2
Thread[pool-1-thread-1,1,main]:2
Thread[pool-1-thread-4,1,main]:1
Thread[pool-1-thread-2,1,main]:1
Thread[pool-1-thread-5,1,main]:2
Thread[pool-1-thread-6,10,main]:1
Thread[pool-1-thread-3,1,main]:1
Thread[pool-1-thread-1,1,main]:1关于并发的优先级问题,最后一个for循环外面的线程照理是优先执行,可是从结果怎么看出来,悲剧的是结果还每次都不一样,
Thread[pool-1-thread-5,1,main]:1 这样一行,几个数字代表什么意思?

解决方案 »

  1.   

    java里的线程优先级设置不好用!
      

  2.   

    Java线程:线程的调度-优先级
    与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。
    线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。
    在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同。