介紹
先看如下代碼:
重複執行多次,發現輸出並不是按照線程的啟動順序來執行。因為這個裡面涉及到CPU對線程的調度問題。
thread1
thread3
thread2
如何讓thread1,thread2,thread3順序執行呢?
方法1
通過join方法去保證多線程順序執行
可以看到輸出一直是如下
thread1
thread2
thread3
join是怎麼實現這個功能的呢?
join方法讓主線程等待子線程結束以後才能繼續運行,因此保證了線程的順序執行
方法2
使用單例線程池,用唯一的工作線程執行任務,保證所有任務按照指定順序執行
ExecutorService executorService = Executors.newSingleThreadExecutor();
這個會把線程放在一個FIFO隊列,依次執行線程
輸出一直為
thread1
thread2
thread3
目的達到
最近有人私信小編有沒有面試視頻,然後就總結了一波,基本涉及到了所有的面試題
如何獲取呢?
轉發後加群,681299970,備註 頭條 即可
閱讀更多 Java識堂 的文章