package thread;import java.util.Arrays;import java.util.Random;public class Thread_join { public static void main(String[] args) { /** * 2个线程共享同一个数组,t1负责向数组中添加100个随机数, * t2负责排序,其中t2要等待t1的结束再继续排序 * * @author 清风已来 * */ int[] arr = new int[100]; Thread t1 = new ThreadA(arr); Thread t2 = new ThreadB(arr,t1); t1.start(); t2.start(); }}// 负责生成100个随机数class ThreadA extends Thread { int[] arr; public ThreadA(int[] arr) { this.arr = arr; } public void run() { Random random = new Random(); for (int i = 0; i < arr.length; i++) { arr[i] = random.nextInt(100); } // 输出数组中全部的数据 System.out.println(Arrays.toString(arr)); }}// 负责对100个数进行排序class ThreadB extends Thread { int[] arr; Thread t1; public ThreadB(int[] arr,Thread t1) { this.arr = arr; this.t1 = t1; } public void run() { try { System.out.println("等待t1的结束!"); // 等待t1的结束 t1.join(); //t1已经正常结束,可以进行排序了 Arrays.sort(arr); System.out.println(Arrays.toString(arr)); } catch (InterruptedException e) { //等待t1结束期间,被其他线程打断,提前结束等待 e.printStackTrace(); } }}