线程的合并指的是:将指定的线程加入到当前的线程之中,可以将两个交替执行的线程合并为顺序执行的线程,如果在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。
package com.ghw.thread;
//线程的合并
/*
* 把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。
* 比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。
* 比如在下面的例子中在20之前两个线程交替执行,但是当join()后一直在执行加入的线程,
* 直到加入的线程完毕再继续执行其他的线程
*/
class RunnableDemo04 implements Runnable {
private String name;
public RunnableDemo04(String name) {
this.name = name;
}
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println(name + ":" + i);
}
}
}
public class ThreadDemo04 {
public static void main(String[] args) {
RunnableDemo04 r1 = new RunnableDemo04("A");
Thread t1 = new Thread(r1);
t1.start();
for (int i = 0; i < 50; i++) {
if (i == 10) {
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("主线程" + i);
}
}
}
输出结果:
主线程0
A:0
主线程1
A:1
主线程2
A:2
A:3
A:4
主线程3
A:5
主线程4
A:6
主线程5
A:7
主线程6
A:8
主线程7
A:9
主线程8
A:10
主线程9
A:11
A:12
A:13
A:14
A:15
A:16
A:17
A:18
A:19
A:20
A:21
A:22
A:23
A:24
A:25
A:26
A:27
A:28
A:29
A:30
A:31
A:32
A:33
A:34
A:35
A:36
A:37
A:38
A:39
A:40
A:41
A:42
A:43
A:44
A:45
A:46
A:47
A:48
A:49
主线程10
主线程11
主线程12
主线程13
主线程14
主线程15
主线程16
主线程17
主线程18
主线程19
主线程20
主线程21
主线程22
主线程23
主线程24
主线程25
主线程26
主线程27
主线程28
主线程29
主线程30
主线程31
主线程32
主线程33
主线程34
主线程35
主线程36
主线程37
主线程38
主线程39
主线程40
主线程41
主线程42
主线程43
主线程44
主线程45
主线程46
主线程47
主线程48
主线程49