package com.softeem.thread;
one:public class MyThread4 extends Thread {
public void run() {
for(int i=0;i<=10;i++){
System.out.println(i);
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread4 thread=new MyThread4();
thread.start();
while(thread.isAlive()){//main()函数循环调用是isAlive()函数判断thread的状态,
//如果线程thread函数还没有结束,则主线程调用thread.sleep(1000)休眠1000毫秒.
try {
thread.sleep(1000);
System.out.println("ThreadFinished.");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
结果:
0
1
2
3
4
5
6
7
8
9
10
ThreadFinished.two:package com.softeem.thread;public class MyThread4 extends Thread {
public void run() {
for (int i = 0; i <= 10; i++) {
System.out.println(i);
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread4 thread = new MyThread4();
thread.start(); try {
thread.join();//等待一个线程的停止.
System.out.println("ThreadFinished.");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }}结果:
0
1
2
3
4
5
6
7
8
9
10
ThreadFinished.我注释的都是书本上说的,two我就看明白了.但one这句话,"如果线程thread函数还没有结束,则主线程调用thread.sleep(1000)休眠1000毫秒.",就不对了,应该说是,如果线程thread函数结束了,则主线程调用thread.sleep(1000)休眠1000毫秒.
我是这样想的,不知我说对了不,说说你们的看法:

解决方案 »

  1.   

    要是线程thread结束了   那么主线程还怎么能调用thread.sleep()啊!   这是我的看法
      

  2.   

    这个循环要等到线程结束才打印出ThreadFinished. 所以说得 没结束的时候去等待
    while(thread.isAlive()){//main()函数循环调用是isAlive()函数判断thread的状态,
    //如果线程thread函数还没有结束,则主线程调用thread.sleep(1000)休眠1000毫秒.
    try {
    thread.sleep(1000);
    System.out.println("ThreadFinished.");
    }