join 用于临时加入线程运行
package songyan; /* * 主线程读到t1.join(); * 主线程变为冻结状态 * 放弃执行权 * t1 运行结束 * 主线程恢复运行状态 * t2.start() * main线程,t2一起抢夺执行权 * */ /* * t1.start(); * t2.start(); * t1.join(); * * t1,t2 开启 * main线程执行到t1.join() * main 冻结 * t1,t2 抢夺执行权 * t1运行完后main重新获得执行权 * main 获得执行权的时机与t2无关 * */ class Demo implements Runnable { public void run(){ for(int i=0;i<600;i++) { System.out.println(Thread.currentThread().getName()+"run ***"+i); } } } public class test{ public static void main(String[] args) throws Exception { Demo d= new Demo(); Thread t1= new Thread(d); Thread t2= new Thread(d); t1.start(); t1.join(); t2.start(); for(int i=0;i<600;i++) { System.out.println("main ********** ***"+i); } } }