public class JoinThread extends Thread
{
public JoinThread (String name)
{
//提供一个有参数的构造器,用于设置该线程的名字
super(name);
}
//重写run()方法,定义线程执行体
public void run()
{
for(int i = 0; i < 10; i++ )
{
System.out.println(getName() + " " + i );
}
}
public static void main(String[] args)throws Exception
{
//启动子线程
JoinThread jt1 = new JoinThread ("新线程");
jt1.start();
for (int i = 0; i < 40 ;i++ )
{
if(i ==20)
{
JoinThread jt = new JoinThread("被Join的线程");
jt.start();
//main线程调用了jt线程的join()方法,main线程必须等jt执行结束才会向下执行
jt.join();
}
System.out.println(Thread.currentThread().getName()+ " " +i);
}
}
}
运行结果:
main 0
新线程 0
新线程 1
main 1
新线程 2
main 2
main 3
main 4
main 5
新线程 3
新线程 4
新线程 5
新线程 6
main 6
main 7
main 8
main 9
main 10
main 11
main 12
main 13
main 14
main 15
main 16
main 17
新线程 7
新线程 8
新线程 9
main 18
main 19
被Join的线程 0
被Join的线程 1
被Join的线程 2
被Join的线程 3
被Join的线程 4
被Join的线程 5
被Join的线程 6
被Join的线程 7
被Join的线程 8
被Join的线程 9
main 20
main 21
main 22
main 23
main 24
main 25
main 26
main 27
main 28
main 29
main 30
main 31
main 32
main 33
main 34
main 35
main 36
main 37
main 38
main 39