class ThreadUse implements Runnable{
public String name="";
public ThreadUse(String str)
{
this.name=str;
}
public void run()
{
System.out.println("ThreadUse1 is running...");
for(int i=0;i<10;i++)
{
System.out.println(name+":"+i);
}
System.out.println(name+":I am the end!");
}
}class ThreadUse2 extends Thread{
private String name = "";
public ThreadUse2(String str){
name= str;
}
public void run(){
System.out.println("ThreadUse2 is running...");
for(int i=0;i<10;i++)
{
System.out.println(name+":"+i);
}
System.out.println(name+":I am the end!");
}
}
public class Contest {
public static void main(String args[])
{
//Runnable接口类的对象创建线程
Thread number1 = new Thread(new ThreadUse("number1"));
//Thread类的子类创建线程
ThreadUse2 number2 = new ThreadUse2("number2");
number1.setPriority(4);
number2.setPriority(4);
number1.start();
number2.start();

}
}我将number1和number2的优先级设置成不同可以实现运行的优先顺序,但是相同的优先级为什么number1先执行呢?
ThreadUse1 is running...
number1:0
number1:1
number1:2
number1:3
number1:4
number1:5
number1:6
number1:7
number1:8
number1:9
number1:I am the end!
ThreadUse2 is running...
number2:0
number2:1
number2:2
number2:3
number2:4
number2:5
number2:6
number2:7
number2:8
number2:9
number2:I am the end!
我用的是MyEclips 8.0

解决方案 »

  1.   

    在run()里加个sleep()就会有效果了,否则时间太短,一般先启动哪个就会先输出哪个
      

  2.   

    线程启动语句的顺序只能决定线程产生的顺序,而实际上线程的执行顺序是有操作系统来调度和控制的。如果优先级相同,你再考虑为什么number1先出来,这就没什么意义了。