12.0、Java多线程——线程强制执行-join
Join:
Join合并线程,待此线程执行完成后,再执行其他线程,其他线程会处于阻塞状态中
可以想象成插队——>
在其他线程执行的过程中当出现 join 时会强制将其他线程停止并处于阻塞状态,然后强行让该线程插队执行完成后再去执行剩下的线程。
接下来用代码来实现看看,如下所示:
package com.hkl.state;
public class TestJoin implements Runnable {
@Override
public void run() {
for (int i = 0; i <= 200; i++) {
System.out.println("我是vip线程——优先执行->"+i);
}
}
public static void main(String[] args) throws InterruptedException {
TestJoin testJoin = new TestJoin();
Thread thread = new Thread(testJoin);
thread.start();
for (int i = 0; i <= 500; i++) {
System.out.println("主线程正在执行->"+i);
if(i == 200) {
thread.join();
}
}
}
}
执行结果如下所示:
可以看到当主线程执行到200的时候,vip线程强行插队,让主线程阻塞停止,让自己先执行完毕,再去执行主线程