為什么不能直接調用run()方法,而必須調用start() 方法開啟一個線程?


如果一個線程的start()方法內部調用run()方法,那么為什么我們不直接在我們的代碼中調用run()方法呢?這樣做有什么問題?

start方法確保代碼在新的線程上下文中運行.如果你直接調用run,那么它就像一個普通的方法調用,它將在當前線程的上下文中運行,而不是新的線程.

start方法包含觸發新線程的特殊代碼;運行顯然沒有這個能力,因為你寫的run方法沒有包含它.

 

當你調用start()方法時你將創建新的線程,並且執行在run()方法里的代碼。但是如果你直接調用run()方法,它不會創建新的線程也不會執行調用線程的代碼。

 

run()方法只是類的一個普通方法而已,如果直接調用Run方法,程序中依然只有主線程這一個線程,其程序執行路徑還是只有一條,還是要順序執行,

還是要等待run方法體執行完畢后才可繼續執行下面的代碼,這樣就沒有達到寫線程的目的。

調用start方法方可啟動線程,而run方法只是thread的一個普通方法調用,還是在主線程里執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM