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  阅读(7)  评论(0)    收藏  举报