面試官問,如何控制多線程執行順序?我該怎麼回答

面試官問,如何控制多線程執行順序?我該怎麼回答

介紹

先看如下代碼:

面試官問,如何控制多線程執行順序?我該怎麼回答

重複執行多次,發現輸出並不是按照線程的啟動順序來執行。因為這個裡面涉及到CPU對線程的調度問題。

thread1
thread3
thread2

如何讓thread1,thread2,thread3順序執行呢?

面試官問,如何控制多線程執行順序?我該怎麼回答

方法1

通過join方法去保證多線程順序執行

面試官問,如何控制多線程執行順序?我該怎麼回答

可以看到輸出一直是如下

thread1
thread2
thread3

join是怎麼實現這個功能的呢?

join方法讓主線程等待子線程結束以後才能繼續運行,因此保證了線程的順序執行

方法2

使用單例線程池,用唯一的工作線程執行任務,保證所有任務按照指定順序執行

ExecutorService executorService = Executors.newSingleThreadExecutor();

這個會把線程放在一個FIFO隊列,依次執行線程

面試官問,如何控制多線程執行順序?我該怎麼回答

輸出一直為

thread1
thread2
thread3

目的達到

最近有人私信小編有沒有面試視頻,然後就總結了一波,基本涉及到了所有的面試題

面試官問,如何控制多線程執行順序?我該怎麼回答

如何獲取呢?

轉發後加群,681299970,備註 頭條 即可


分享到:


相關文章: