我遇到過這種說法,爲了創建一個新線程,最好使用Runnable
接口,而不是擴展Thread
類。如果這是真的,爲什麼Java甚至允許我們擴展Thread
類。爲什麼不做它final
?線程和運行
線程和運行
回答
因爲你製作的東西幾乎肯定不是線程。這是一個ThingTheDoesSomeUsefulWork
,你恰好想要它在一個單獨的線程上做有用的工作。假設我正在寫一個每30秒輪詢一次Web服務器的事情。是ThingThatPollsWebServer
一個線程?或者它只是輪詢Web服務器的事情。
此外,製作Runnable
可以更容易地進行測試,此外,它還使您可以靈活地運行不使用線程或使用執行程序框架的東西。
這是如何回答我的問題。你似乎只提倡Runnable接口。怎麼樣延長線程? – 2011-03-23 05:49:34
是的,因爲這是正確的做法!只有擴展線程,如果你想專門化它的行爲。 – dty 2011-03-23 08:22:01
您可能想要更改線程的行爲或添加其他功能。如果是這種情況,那麼擴展Thread類是最合適的。
正確。引用的陳述不是無條件的,所以接受它作爲真理,然後想知道爲什麼'Thread'類設計沒有遵循它是有點誤導。 – erickson 2011-03-22 22:08:22
你是對的。但是你多久看到'Thread'被分類爲不是隻執行'run'? – 2011-03-22 22:11:50
btw,如果我想改變'Class'或者'String'的行爲,我應該怎麼做?不,先生。這是不合邏輯的。 – 2011-03-22 22:23:43
使用線程是舊的方式(在java 5.0之前)使用,線程:)。看看類ExecutorService。
- 1. 運行C++線程()
- 2. 線程未運行
- 3. Java線程運行
- 4. FixedThreadPool線程數和運行時間
- 5. ThreadLocal變量是線程和可運行
- 6. Java的運行和停止線程
- 7. 如何創建和運行新線程?
- 8. 從另一個線程運行線程
- 9. 新線程運行的UI線程
- 10. python多線程長線程運行
- 11. 線程可運行vs擴展線程
- 12. 運行線程和線程對象之間的關係
- 13. 運行時線程創建
- 14. 線程只運行一次
- 15. 線程運行問題
- 16. 在gtest中運行線程
- 17. Java線程未運行
- 18. 延遲運行線程
- 19. 在線程上運行NSTimer
- 20. Python:線程仍在運行
- 21. 保持子線程運行
- 22. 線程運行不正常
- 23. 運行的線程在C#
- 24. 線程池運行爲了
- 25. 在vb.net中運行線程
- 26. 運行多個UI線程
- 27. Python正在運行線程
- 28. JavaFX多次運行線程
- 29. android線程不運行
- 30. 運行的線程太多
[「implements Runnable」vs「extends Thread」]的可能重複(http://stackoverflow.com/questions/541487/implements-runnable-vs-extends-thread) – 2013-03-12 16:41:55