优先级的高低只是说明线程执行频率的高低,并不会导致线程得不到执行,优先权不会导致死锁
示例:
public class SimplePriorities implements Runnable{ /** * 倒计时变量 */ private int countDown=5; private volatile double d; /** * 优先等级 */ private int priority; public SimplePriorities(int priority){ this.priority=priority; } /** * 获取自动生成的名称和倒计时数 * @return */ public String toString(){ return Thread.currentThread()+":"+countDown; } @Override 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){ //使用执行器管理Thread对象 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(); } }