關鍵區別–可運行與線程
正在執行的程序稱為進程。該流程可分為多個子流程。例如,microsoftword就是一個進程。同時,它檢查拼寫錯誤和語法。這是一個子流程。這些子流程稱為線程。多線程處理是同時執行多個線程的過程。線程化應用程序可以使用不同的編程語言構建。Runnable和Thread與Java編程相關聯。Java中有兩種方法通過實現可運行接口或擴展thread類來創建線程。在實現Runnable時,許多線程可以共享同一個線程對象,而在擴展thread類時,每個線程都有一個與之關聯的唯一對象。這就是Runnable和Thread之間的關鍵區別。
目錄
1. 概述和主要區別
2. 什麼是可運行的
3. 什麼是線
4. Runnable和Thread之間的相似性
5. 並排比較-表格形式的可運行與線程
6. 摘要
什麼是可運行(runnable)?
一根線穿過一些狀態。“新”是線程生命週期的開始。在start()方法調用新線程後,它將變為可運行的。如果線程調度程序選擇了正在運行的線程,則該線程將選擇該狀態。如果該線程正在等待另一個線程執行任務,則該線程正在等待該狀態。線程完成工作後,將進入終止狀態。
可以使用可運行的接口實現可運行線程。參考以下程序。
根據上述程序,Runnable Demo類實現了Runnable接口。run()方法位於實現可運行接口的類中。它是線程的入口點。邏輯在run()方法中。在主程序中,線程是通過定義一個從可運行的Demo類實例化的對象來創建的。是t1。start()方法是使用t1調用的。
參考以下程序。
根據上面的例子,類Runnable Demo實現了Runnable接口。使用線程執行的邏輯是用run()方法編寫的。在主程序中,線程是通過定義一個從可運行的Demo類實例化的對象來創建的。是t1。然後,使用t1調用start()方法。
什麼是線(thread)?
另一種創建線程的方法是擴展thread類。它包括三個步驟。首先是將類聲明為Thread類的擴展。然後,應該編寫run()方法。它具有線程應該執行的步驟序列。最後,創建thread對象,並調用start()方法來啟動線程的執行。參考以下程序。
根據上面的程序,MyThread類擴展了Thread類。它重寫run方法。run()方法包含線程要執行的邏輯。它是線程的入口點。然後創建線程對象。它是線程1。線程是使用start()方法啟動的。它將執行對run()方法的調用。
下面是擴展Thread類的兩個類的示例程序。
根據上面的程序,A類和B類都在擴展線程類。這兩個類都有run()方法的實現。主線程執行main()方法。在主線程死之前,它創建並啟動thread1和thread2。當主線程到達main方法的末尾時,三個線程正在並行運行。線程沒有給出輸出的具體順序。一旦線程啟動,就很難決定它們將執行的順序。它們獨立運行。
可運行(runnable)和線(thread)的共同點
- 它們都是用Java創建線程的。
可運行(runnable)和線(thread)的區別
可運行vs線程 | |
Runnable是Java中的一個接口,用於創建一個允許多個線程共享同一個線程對象的線程。 | thread是Java中的一個類,用於創建一個線程,其中每個線程都有一個與之關聯的唯一對象。 |
記憶 | |
在Runnable中,多個線程共享同一個對象,因此需要較少的內存。 | 在線程類中,每個線程創建一個唯一的對象,因此需要更多內存。 |
擴展能力 | |
在實現可運行接口之後,它可以擴展一個類。 | Java不支持多個繼承。在擴展Thread類之後,它不能擴展任何其他類。 |
代碼可維護性 | |
可運行接口使代碼更易於維護。 | 在線程類中,維護非常耗時。 |
總結 - 可運行(runnable) vs. 線(thread)
一個流程被分成多個子流程來同時執行多個任務。這些子流程稱為線程。實例化線程可以通過實現可運行接口或擴展thread類來完成。它是一個面向對象的程序設計,但不是一個很容易擴展的類。在實現Runnable時,許多線程可以共享同一個線程對象,而在擴展thread類時,每個線程都有一個與之關聯的唯一對象。這就是Runnable和Thread之間的區別。在線程類中創建多個對象會消耗更多內存。
下載runnable vs thread的pdf
你可以下載這篇文章的PDF版本,並按照引文說明離線使用。請在這裡下載PDF版本的Runnable和Thread的區別