public class JoinTest {
public static void main(String[] args) throws InterruptedException {
MyThread3 thread=new MyThread3();
thread.start();
//thread.join(1);//将主线程加入到子线程后面,不过如果子线程在1毫秒时间内没执行完,则主线程便不再等待它执行完,进入就绪状态,等待cpu调度
System.out.println(Thread.currentThread());
Thread.currentThread().join();
for(int i=0;i<30;i++){
System.out.println(Thread.currentThread().getName() + "线程第" + i + "次执行!");
}
}
}
class MyThread3 extends Thread {
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
try {
System.out.println(this.getName() + "线程第" + i + "次执行!");
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
PHP中文网2017-04-17 18:00:52
那你得先知道join
函數是幹嘛用的啊!我們先來看看文件:
/**
* Waits for this thread to die.
*
* <p> An invocation of this method behaves in exactly the same
* way as the invocation
*
* <blockquote>
* {@linkplain #join(long) join}{@code (0)}
* </blockquote>
*
* @throws InterruptedException
* if any thread has interrupted the current thread. The
* <i>interrupted status</i> of the current thread is
* cleared when this exception is thrown.
*/
第一句話就說了Waits for this thread to die
,你在主線程上執行"我要等到主線程結束,當前線程才能結束",這不成死循環了麼。