设置线程优先级
优先级的高低只是说明线程执行频率的高低,并不会导致线程得不到执行,优先权不会导致死锁
示例:
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();
}
}
还没有评论,来说两句吧...