java中多線程執行時,為何調用的是start()方法而不是run()方法


Thead類中start()方法和run()方法的區別 
1,start()用來啟動一個線程,當調用start()方法時,系統才會開啟一個線程,通過Thead類中start()方法來啟動的線程處於就緒狀態(可運行狀態),此時並沒有運行,一旦得到CPU時間片,就自動開始執行run()方法。此時不需要等待run()方法執行完也可以繼續執行下面的代碼,所以也由此看出run()方法並沒有實現多線程。 

2,run()方法是在本線程里的,只是線程里的一個函數,而不是多線程的。如果直接調用run(),其實就相當於是調用了一個普通函數而已,直接待用run()方法必須等待run()方法執行完畢才能執行下面的代碼,所以執行路徑還是只有一條,根本就沒有線程的特征,所以在多線程執行時要使用start()方法而不是run()方法。

3,把需要處理的代碼放到run()方法中,start()方法啟動線程將自動調用run()方法,這個由java的內存機制規定的。並且run()方法必需是public訪問權限,返回值類型為void。

4,當程序調用start方法一個新線程將會被創建,並且在run方法中的代碼將會在新線程上運行

參考:java中多線程執行時,為何調用的是start()方法而不是run()方法


免責聲明!

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



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