JAVA多线程之方法 JOIN详解及实例代码
什么是JOIN方法?
在Java多线程中,Join方法是Thread类提供的一种方法。用于主线程等待子线程执行完毕后再执行,即实现主线程对于子线程的加入(join)操作。
JOIN方法的语法
在Java多线程中,join方法的语法如下:
public final void join() throws InterruptedException
方法说明:
该方法会使当前主线程处于阻塞状态,等待子线程执行完毕后才能继续执行。
JOIN方法的作用
在JAVA多线程中,当一个线程执行过程中调用另一个线程的join方法时,调用线程将被阻塞,直到被调用线程执行完。阻塞的线程会被加入到被调用线程的等待队列中。
JOIN方法的实例代码
下面我们来看一下join方法的实例代码:
public class JoinDemo implements Runnable {
@Override
public void run() {
System.out.println("线程" + Thread.currentThread().getName() + "开始执行");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程" + Thread.currentThread().getName() + "执行完毕");
}
public static void main(String[] args) throws InterruptedException {
System.out.println("主线程开始执行");
Thread thread1 = new Thread(new JoinDemo(), "Thread-1");
Thread thread2 = new Thread(new JoinDemo(), "Thread-2");
thread1.start();
thread2.start();
thread1.join();
thread2.join();
System.out.println("主线程执行完毕");
}
}
代码中,我们创建了两个线程thread1和thread2,并使它们同时开始执行。由于在主线程中我们使用了join方法,所以主线程必须等待thread1和thread2都执行完之后才能继续执行。
输出结果:
主线程开始执行
线程Thread-1开始执行
线程Thread-2开始执行
线程Thread-1执行完毕
线程Thread-2执行完毕
主线程执行完毕
示例说明:
对于该示例代码,我们创建了两个线程,在它们开始执行后,我们调用了join方法,这样主线程就会等待这两个线程执行完毕后再执行。通过实际输出的结果,我们也可以看到,在两个子线程执行完毕之后,主线程才完成了执行。
JOIN方法的另一种示例代码
下面再来看一个JOIN方法的示例代码:
public class JoinDemo2 implements Runnable {
private int num;
public JoinDemo2(int num) {
this.num = num;
}
@Override
public void run() {
System.out.println("线程" + Thread.currentThread().getName() + "开始执行");
try {
Thread.sleep(100 * num);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程" + Thread.currentThread().getName() + "执行完毕");
}
public static void main(String[] args) throws InterruptedException {
System.out.println("主线程开始执行");
Thread[] threads = new Thread[10];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(new JoinDemo2(i), "Thread-" + (i + 1));
threads[i].start();
}
for (Thread thread : threads) {
thread.join();
}
System.out.println("主线程执行完毕");
}
}
代码中,我们创建了10个线程并使它们开始执行。由于我们使用了join方法,所以主线程必须等待10个线程都执行完成后才能继续执行。
输出结果:
主线程开始执行
线程Thread-1开始执行
线程Thread-2开始执行
...
线程Thread-10开始执行
线程Thread-0执行完毕
线程Thread-1执行完毕
...
线程Thread-9执行完毕
主线程执行完毕
示例说明:
对于该示例代码,我们创建了10个线程,并启动它们的执行。通过结合使用join方法,我们可以看到,在所有线程都执行完成之后,主线程才能够完成执行。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA多线程之方法 JOIN详解及实例代码 - Python技术站