2016-05-13 64 views

回答

1

線程的本質是它運行着某些東西......所以線程抽象自然需要你提供一些東西來運行。這是通過要求你實現run()來完成的。

0

https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#run()

因爲線程實現Runnable,它具有不具有任何實現一個run()方法(它們無法預知你想要的東西「跑」)

因此,當擴展Thread類,你需要重寫run()方法

PS:你可以創建一個擴展Thread類的類,並且不會覆蓋run()方法,java不會拋出任何錯誤,但是當你啓動Thread時,你將會只是執行一個空的實現(所以基本上什麼都沒有)

0

當您爲某個目的創建線程時。要達到這個目的,你必須編寫一個代碼。

Thread類的run()中,實現什麼都不做。你有添加自己的邏輯來實現你的目的。簡單地覆蓋run()寫你的邏輯和完成。

現在,如果你有疑問,爲什麼Java的不守這個run()作爲抽象方法然後請參閱發佈Why is Thread not an abstract class and start() not final?

0

當我們擴展一個類,我們不只是覆蓋抽象方法。當我們需要在子類中提供特定的父類方法的更具體的實現時,重寫就是我們所做的。我們在擴展線程類時覆蓋run的原因是我們希望某些代碼以多線程方式運行。所以Java的創建者們已經同意了一個被覆蓋的方法的名字。否則,每個開發人員都會使用他/她自己的名稱作爲該方法,編譯器不知道多線程代碼的位置。

相關問題