public class Priorty { static class MyThread extends Thread{
private int ID=0;
public MyThread(int id){
this.ID=id;
}
public void run(){
System.out.println("MyThread-"+this.ID+" begin! Priorty: "+this.getPriority());
System.out.println("MyThread-"+this.ID+" end");
}
}
public static void main(String []args){
MyThread[] myThreads=new MyThread[3];
for(int i=0;i<3;i++){
myThreads[i]=new MyThread(i+1);
myThreads[i].setPriority(i*3+1);
}
for(int i=0;i<3;i++){
myThreads[i].start();
}
}
}启动3个线程,分别将优先级设为1,4,7.目的是先调用按优先级的高低输出,但是虚拟机的输出结果是随机的,请问用什么方法,能按规定优先级的高低调用?//运行结果:
MyThread-2 begin! Priorty: 4
MyThread-3 begin! Priorty: 7
MyThread-1 begin! Priorty: 1
MyThread-2 end
MyThread-3 end
MyThread-1 end
//--------------
MyThread-1 begin! Priorty: 1
MyThread-2 begin! Priorty: 4
MyThread-1 end
MyThread-3 begin! Priorty: 7
MyThread-3 end
MyThread-2 end
//--------------
MyThread-1 begin! Priorty: 1
MyThread-1 end
MyThread-3 begin! Priorty: 7
MyThread-3 end
MyThread-2 begin! Priorty: 4
MyThread-2 end
//--------------
MyThread-3 begin! Priorty: 7
MyThread-3 end
MyThread-2 begin! Priorty: 4
MyThread-2 end
MyThread-1 begin! Priorty: 1
MyThread-1 end
myThreads[i].start();
Tread.sleep(10);
}每次启动一个线程后,当前线程休眠10毫秒,以确保它已经开始。
如果你是给我个建议我谢谢你,但是如果在对方有疑问的时候用这种方式回答你觉得合适吗?
最起码要尊重发帖人,来CSDN的都是为了学习,碰到问题了,向大伙请教一下,一起解决,或许也是你不会或者是你没遇到的问题。
如果你要是把所有计算机的书都看完并且精通了那你来CSDN有什么意义?难道就是为了让别人看你打那几个破字?
-----------------------做人厚道些好!!!
以上个人观点,仅对此人回答强烈不满!
在JVM的调度算法中也是如此.
只是这段代码运行太快了,根本就不是同一时刻的,前一个线程早运行完了~
加了Thread.sleep()也没用
MyThread-3 end
MyThread-2 begin! Priorty: 4
MyThread-2 end
MyThread-1 begin! Priorty: 1
MyThread-1 end
我的CP上每次运行都是这个..........
后面的一直等待,这样不好吧。11楼估计是cpu太差了