【!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资源的概率大一些而已。

原文地址:https://www.cnblogs.com/dream-to-pku/p/9512844.html