前言:
目前我们对“java如何实现多线程的运行”都比较珍视,我们都需要了解一些“java如何实现多线程的运行”的相关资讯。那么小编也在网络上收集了一些对于“java如何实现多线程的运行””的相关内容,希望小伙伴们能喜欢,朋友们一起来学习一下吧!Thread类的join(long millis)和join()方法源码如下:
Thread中join方法把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的join()方法,表示B线程直到线程A执行完毕后,才会继续执行线程B。join(long millis)方法的作用,是等待这个线程millis毫秒数后结束,即最多等待millis时间即可执行当前线程;如果millis为0,意味着必须等待这个线程执行完毕,即t.join()方法阻塞调用此方法的线程(calling thread)进入 TIMED_WAITING 状态,直到线程t完成,此线程再继续;
下面我们用代码来实现:有3个线程A、B、C,让线程按照A、B、C执行顺序执行。
代码样例:
运行结果:
源码:
package org.andy.effective.java.study;public class TheadJoinTest { public static void main(String[] args) throws InterruptedException { final Thread thread1 = new Thread(new Runnable() { @Override public void run() { // 线程进入标志 System.out.println(Thread.currentThread().getName() + " Start"); // 模拟处理业务 System.out.println(Thread.currentThread().getName() + " DoSomething"); // 线程结束标志 System.out.println(Thread.currentThread().getName() + " End"); } }, "Thread A"); final Thread thread2 = new Thread(new Runnable() { @Override public void run() { // 线程进入标志 System.out.println(Thread.currentThread().getName() + " Start"); // 加入线程A,表示线程B处理业务之前必须等A线程执行完毕 try { thread1.join(); } catch (InterruptedException e) { e.printStackTrace(); } // 模拟处理业务 System.out.println(Thread.currentThread().getName() + " DoSomething"); // 线程结束标志 System.out.println(Thread.currentThread().getName() + " End"); } }, "Thread B"); Thread thread3 = new Thread(new Runnable() { @Override public void run() { // 线程进入标志 System.out.println(Thread.currentThread().getName() + " Start"); // 加入线程B,表示线程C处理业务之前必须等B线程执行完毕 try { thread2.join(); } catch (InterruptedException e) { e.printStackTrace(); } // 模拟处理业务 System.out.println(Thread.currentThread().getName() + " DoSomething"); // 线程结束标志 System.out.println(Thread.currentThread().getName() + " End"); } }, "Thread C"); System.out.println("Main Thread begin to start threads!"); // 这里三个线程的启动顺序可以任意,大家可以试下 thread2.start(); thread3.start(); thread1.start(); // 主线程要等待C线程执行完毕,才能继续主线程逻辑 thread3.join(); System.out.println("Main Thread End!"); }}
标签: #java如何实现多线程的运行 #java多个方法执行顺序 #java多个方法执行顺序怎么设置 #java多个方法执行顺序怎么设置的