Java面試之有三個執行緒T1,T2,T3,如何保證順序執行?

码路编程發表於2024-11-13

前言

本來想著給自己放鬆一下,刷刷部落格,突然被幾道面試題難倒!有三個執行緒T1,T2,T3,如何保證順序執行?似乎有點模糊了,那就大概看一下面試題吧。好記性不如爛鍵盤

*** 12萬字的java面試題整理 ***

有三個執行緒T1,T2,T3,如何保證順序執行?

在多執行緒中有多種方法讓執行緒按特定順序執行,你可以用執行緒類的join()方法在一個執行緒中啟動另一個執行緒,另外一個執行緒完成該執行緒繼續執行。為了確保三個執行緒的順序你應該先啟動最後一個(T3呼叫T2,T2呼叫T1),這樣T1就會先完成而T3最後完成。

實際上先啟動三個執行緒中哪一個都行, 因為在每個執行緒的run方法中用join方法限定了三個執行緒的執行順序。

public class JoinTest2 { 
  // 1.現在有T1、T2、T3三個執行緒,你怎樣保證T2在T1執行完後執行,T3在T2執行完後執行
   public static void main(String[] args) {
            final Thread t1 = new Thread(new Runnable() {
                  @Override
                   public void run() {
                               System.out.println("t1"); 
                    }
            }); 
            final Thread t2 = new Thread(new Runnable() {
                    @Override
                     public void run() {
                             try {
                                   // 引用t1執行緒,等待t1執行緒執行完
                                     t1.join();
                               } catch (InterruptedException e) {
                                     e.printStackTrace();
                               }
                             System.out.println("t2");
                      }
             });
          Thread t3 = new Thread(new Runnable() {
                   @Override
                    public void run() {
                           try {
                                 // 引用t2執行緒,等待t2執行緒執行完
                                 t2.join();
                            } catch (InterruptedException e) {
                                 e.printStackTrace();
                             }
                             System.out.println("t3");
                      }
             });
           t3.start();//這裡三個執行緒的啟動順序可以任意,大家可以試下!
           t2.start();
           t1.start();
   }
}

相關文章