本文主要是介绍保证三个线程依次按顺序执行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Join方法:T3先执行,调用t2.join,让T2执行完后再执行T3.
在T2的run方法中,调用t1.join(),让T1执行完后再让T2执行。
public class JoinTest{public static void main(String[] args){final Thread t1 = new Thread(new Runnable(){public void run(){System.out.println("t1");}});final Thread t2 = new Thread(new Runnable(){public run(){try{//引用t1线程,等待t1线程执行完t1.join();}catch(InterruptedException e){e.printStackTrace();}System.out.println("t2");}});Thread t3 = new Thread(new Runnable(){public void run(){try{t2.join();}catch(InterruptedException e){e.printStackTrace();}System.out.println("t3");}});t3.start();t2.start();t1.start();}
}
newSingleThreadExecutor 这个线程池,保证线程里面的任务依次执行
public class TestJoin {public static void main(String[] args) throws InterruptedException {final Thread t1 = new Thread(new Runnable() {public void run() {System.out.println(Thread.currentThread().getName() + " run 1");}}, "T1");final Thread t2 = new Thread(new Runnable() {public void run() {System.out.println(Thread.currentThread().getName() + " run 2");try {t1.join(10);} catch (InterruptedException e) {e.printStackTrace();}}}, "T2");final Thread t3 = new Thread(new Runnable() {public void run() {System.out.println(Thread.currentThread().getName() + " run 3");try {t2.join(10);} catch (InterruptedException e) {e.printStackTrace();}}}, "T3");// method1//t1.start();//t2.start();//t3.start();// method 2 使用 单个任务的线程池来实现。保证线程的依次执行ExecutorService executor = Executors.newSingleThreadExecutor();executor.submit(t1);executor.submit(t2);executor.submit(t3);executor.shutdown();}
}
这篇关于保证三个线程依次按顺序执行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!