Java多线程-线程的调度(合并)

来源:互联网 发布:kaze算法 编辑:程序博客网 时间:2024/06/02 20:08

线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。

join为非静态方法,定义如下:
void join(): 等待该线程终止。 
void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。 
void join(long millis, int nanos): 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳

package thread;public class ThreadJoin {public static void main(String[] args) {ThreadJoin join = new ThreadJoin();Thread t1 = join.new MyThread1();t1.start();for (int i = 0; i < 20; i++) {System.out.println(">>>>主线程第" + i + "次执行!");if (i > 2) {try {// t1线程合并到主线程中,主线程停止执行过程,转而执行t1线程,直到t1执行完毕后继续。t1.join();if(i < 4){System.out.println("t1 join完成.... 开始执行....");}//t1.join(10000);} catch (InterruptedException e) {e.printStackTrace();}}}}class MyThread1 extends Thread {public void run() {for (int i = 0; i < 10; i++) {System.out.println("----线程1第" + i + "次执行!");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}}

运行结果:

>>>>主线程第0次执行!----线程1第0次执行!>>>>主线程第1次执行!>>>>主线程第2次执行!>>>>主线程第3次执行!----线程1第1次执行!----线程1第2次执行!----线程1第3次执行!----线程1第4次执行!----线程1第5次执行!----线程1第6次执行!----线程1第7次执行!----线程1第8次执行!----线程1第9次执行!t1 join完成.... 开始执行....>>>>主线程第4次执行!>>>>主线程第5次执行!>>>>主线程第6次执行!>>>>主线程第7次执行!>>>>主线程第8次执行!>>>>主线程第9次执行!>>>>主线程第10次执行!>>>>主线程第11次执行!>>>>主线程第12次执行!>>>>主线程第13次执行!>>>>主线程第14次执行!>>>>主线程第15次执行!>>>>主线程第16次执行!>>>>主线程第17次执行!>>>>主线程第18次执行!>>>>主线程第19次执行!