【!Important】如何保证线程执行的先后顺序
1、假设有三个线程,分别为T1、T2、T3,如果让线程T2在线程T1之后执行,在线程T3之前执行。
使用线程的join方法,该方法的作用是“等待线程执行结束”,即join()方法后面的代码块都要等待现场执行结束后才能执行。
1 public class Test { 2 @SuppressWarnings("static-access") 3 public static void main(String[] args) throws InterruptedException { 4 Thread t1 = new Thread(new Runner()); 5 Thread t2 = new Thread(new Runner()); 6 Thread t3 = new Thread(new Runner()); 7 t1.start(); 8 t1.sleep(5000); 9 t1.join(); 10 11 t2.start(); 12 t2.sleep(1000); 13 t2.join(); 14 t3.start(); 15 t3.join(); 16 17 } 18 19 } 20 21 class Runner implements Runnable{ 22 23 @Override 24 public void run() { 25 System.out.println(Thread.currentThread().getName()+""); 26 27 } 28 29 }
注:线程的优先级无法保障线程的执行次序,只不过优先级高的线程获取CPU资源的概率大一些而已。