Java join()函数的用法(附带实例)
Java 的 Thread 类提供了 join() 函数,当某个线程执行中调用其他线程的 join() 函数时,该线程将被阻塞,直到 join() 方法所调用的线程结束,这种情况称为线程插队。
接下来,通过案例来演示线程插队:
Demo 类在 main() 函数中创建 MyThread 类实例并启动线程,main() 函数中也循环打印吃菜的顺序,当变量 i 的值为 3 时,调用 join() 方法插入子线程,然后子线程开始执行,直到子线程执行完,main() 函数的主线程才能继续执行。
接下来,通过案例来演示线程插队:
public class Demo {
public static void main(String[] args) throws Exception {
// 创建MyThread实例
System.out.println("吃饭时吃菜的顺序:");
MyThread myThread1 = new MyThread("酱焖茼蒿");
myThread1.start(); // 开启线程
for (int i = 1; i < 6; i++) {
if (i == 3) {
try {
System.out.println("酱焖茼蒿要开始插队了");
myThread1.join(); // 线程插入
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("水煮肉片" + i);
}
}
}
class MyThread extends Thread {
private String socialStatus;
private int tickets = 10;
public MyThread(String socialStatus) {
this.socialStatus = socialStatus;
}
@Override
public void run() {
for (int i = 1; i < 6; i++) {
System.out.println(socialStatus + i);
}
}
}
程序的运行结果如下:
吃饭时吃菜的顺序:
水煮肉片1
水煮肉片2
酱焖茼蒿要开始插队了
酱焖茼蒿1
酱焖茼蒿2
酱焖茼蒿3
酱焖茼蒿4
酱焖茼蒿5
水煮肉片3
水煮肉片4
水煮肉片5
Demo 类在 main() 函数中创建 MyThread 类实例并启动线程,main() 函数中也循环打印吃菜的顺序,当变量 i 的值为 3 时,调用 join() 方法插入子线程,然后子线程开始执行,直到子线程执行完,main() 函数的主线程才能继续执行。
ICP备案:
公安联网备案: