JUC学习-12-线程合并

JUC学习-12-线程合并

子线程执行join方法后,主线程会等待子线程执行完毕结束以后 再去继续执行主线程的代码

class JoinThread {
static int value = 1;

public static void main(String[] args) {
Thread t = new Thread(() -> {
value = 10;
System.out.println("线程Runnable");
});
// 异步
t.start();
System.out.println("主线程: " + value);
}
}

结果如下图所示:

因为在启动主线程的时候,不会等待子线程执行完成以后再去执行。所以执行完start()方法以后会立即执行下面的System.out代码(异步执行),打印出来的结果的value的值是“1”

image

让主线程睡眠

class JoinThread {
static int value = 1;

public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(() -> {
value = 10;
System.out.println("线程Runnable");
});
t.start();
// 主线程睡眠
Thread.sleep(1000);
System.out.println("主线程: " + value);
}
}

结果如下图所示:

主线程在睡眠的时候,子线程已经进行完打印和赋值操作。此时打印出来的值是“10”

image

利用join方法

class JoinThread {
static int value = 1;

public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(() -> {
value = 10;
System.out.println("线程Runnable");
});
t.start();
// 使用join方法
t.join();
System.out.println("主线程: " + value);
}
}

结果如下图所示:

主线程会等待子线程执行完毕以后再去执行(注:join可以设置主线程的等待时间 参数)

image

posted @ 2025-07-08 10:00  skystrivegao  阅读(20)  评论(0)    收藏  举报