线程问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 05:52:28
public class MyThread extends Thread{
int count=1,number1;
public MyThread(int num){
number1=num;
System.out.println("创建线程数 "+number1);
}
public void run(){
while(true){
System.out.println("线程 "+number1+":计数"+count);
if((++count)==6) break;
}
}
public static void main(String args[]){
for(int i=0;i<3;i++) new MyThread(i+1).start();
}
}
结果是:
创建线程数 1
创建线程数 2
创建线程数 3
线程 1:计数 1
线程 1:计数 2
线程 1:计数 3
线程 1:计数 4
线程 1:计数 5
线程 2:计数 1
线程 2:计数 2
线程 2:计数 3
线程 2:计数 4
线程 2:计数 5
线程 3:计数 1
……
为什么不是:
创建线程数 1
线程 1:计数 1
线程 1:计数 2
线程 1:计数 3
创建线程数 2
线程 2:计数 1
……
我是在书上看到的,自己也用记事本编译运行了,结果就是那样的(上面的)!

我的执行结果是:
创建线程数 1
创建线程数 2
线程 1:计数1
创建线程数 3
线程 2:计数1
线程 2:计数2
线程 1:计数2
线程 3:计数1
线程 3:计数2
线程 3:计数3
线程 3:计数4
线程 3:计数5
线程 2:计数3
线程 2:计数4
线程 2:计数5
线程 1:计数3
线程 1:计数4
线程 1:计数5
因为是多线程,所以具体怎么执行也是在不同机器上有不同的答案,如果你想看的清楚点你可以这样:
public class MyThread extends Thread{
int count=1,number1;
public MyThread(int num){
number1=num;
try {
this.sleep(100);
} catch (InterruptedException e) {
e.toString();
}
System.out.println("创建线程数 "+number1);
}
public void run(){
while(true){
try {
this.sleep(1000);
} catch (InterruptedException e) {
e.toString();
}
System.out.println("线程 "+number1+":计数"+count);
if((++count)==6) break;
}
}
public static void main(String args[]){
for(int i=0;i<3;i++) new MyThread(i+