可執行(runnable)和線(thread)的區別

正在執行的程式稱為程序。該流程可分為多個子流程。例如,microsoftword就是一個程序。同時,它檢查拼寫錯誤和語法。這是一個子流程。這些子流程稱為執行緒。多執行緒處理是同時執行多個執行緒的過程。執行緒化應用程式可以使用不同的程式語言構建。Runnable和Thread與Java程式設計相關聯。Java中有兩種方法透過實現可執行介面或擴充套件thread類來建立執行緒。在實現Runnable時,許多執行緒可以共享...

關鍵區別–可運行與線程

正在執行的程序稱為進程。該流程可分為多個子流程。例如,microsoftword就是一個進程。同時,它檢查拼寫錯誤和語法。這是一個子流程。這些子流程稱為線程。多線程處理是同時執行多個線程的過程。線程化應用程序可以使用不同的編程語言構建。Runnable和Thread與Java編程相關聯。Java中有兩種方法通過實現可運行接口或擴展thread類來創建線程。在實現Runnable時,許多線程可以共享同一個線程對象,而在擴展thread類時,每個線程都有一個與之關聯的唯一對象。這就是Runnable和Thread之間的關鍵區別。

目錄

1. 概述和主要區別
2. 什麼是可運行的
3. 什麼是線
4. Runnable和Thread之間的相似性
5. 並排比較-表格形式的可運行與線程
6. 摘要

什麼是可運行(runnable)?

一根線穿過一些狀態。“新”是線程生命週期的開始。在start()方法調用新線程後,它將變為可運行的。如果線程調度程序選擇了正在運行的線程,則該線程將選擇該狀態。如果該線程正在等待另一個線程執行任務,則該線程正在等待該狀態。線程完成工作後,將進入終止狀態。

可以使用可運行的接口實現可運行線程。參考以下程序。

可運行(runnable)和線(thread)的區別

圖01:使用可運行接口創建線程的Java程序

根據上述程序,Runnable Demo類實現了Runnable接口。run()方法位於實現可運行接口的類中。它是線程的入口點。邏輯在run()方法中。在主程序中,線程是通過定義一個從可運行的Demo類實例化的對象來創建的。是t1。start()方法是使用t1調用的。

參考以下程序。

可運行(runnable)和線(thread)的區別

圖02:Java程序通過實現可運行接口創建線程來執行循環

根據上面的例子,類Runnable Demo實現了Runnable接口。使用線程執行的邏輯是用run()方法編寫的。在主程序中,線程是通過定義一個從可運行的Demo類實例化的對象來創建的。是t1。然後,使用t1調用start()方法。

什麼是線(thread)?

另一種創建線程的方法是擴展thread類。它包括三個步驟。首先是將類聲明為Thread類的擴展。然後,應該編寫run()方法。它具有線程應該執行的步驟序列。最後,創建thread對象,並調用start()方法來啟動線程的執行。參考以下程序。

可運行(runnable)和線(thread)的區別

圖03:擴展線程類的Java程序

根據上面的程序,MyThread類擴展了Thread類。它重寫run方法。run()方法包含線程要執行的邏輯。它是線程的入口點。然後創建線程對象。它是線程1。線程是使用start()方法啟動的。它將執行對run()方法的調用。

下面是擴展Thread類的兩個類的示例程序。

可運行(runnable)和線(thread)的區別

圖04:帶有兩個類的Java程序擴展了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的區別

引用
  • 發表於 2020-10-19 19:23
  • 閱讀 ( 49 )
  • 分類:科技

你可能感興趣的文章

穿線(threading)和打蠟(waxing)的區別

...。 •打蠟時,必須等到蠟變硬或變幹。 •敏感面板: •執行緒是敏感面板的好選擇,因為它不涉及化學物質。 •對於敏感面板,打蠟不是一個好的選擇,因為它涉及化學物質。 •頭髮向後生長: •穿線後的頭髮會很快長回來...

  • 發佈於 2020-10-02 17:28
  • 閲讀 ( 44 )

睡覺(sleep)和在java中等待(wait in java)的區別

...兩種建立執行緒的方法。這是透過擴充套件thread類或實現可執行介面來實現的。Thread類具有用於線上程上建立和執行操作的建構函式和方法。Thread類擴充套件物件類並實現可執行介面。可執行介面應該由任何一個類實現,這些類...

  • 發佈於 2020-10-19 03:04
  • 閲讀 ( 47 )

聯結器(linker)和裝載機(loader)的區別

...其他檔案(如標頭檔案)連結起來並建立副檔名為.exe的可執行檔案的軟體。載入程式是將連結器生成的可執行檔案載入到主記憶體的系統軟體。這是連結器和載入器之間的關鍵區別。 目錄 1. 概述和主要區別 2.什麼是連結器 3. ...

  • 發佈於 2020-10-19 05:42
  • 閲讀 ( 36 )

編譯時間(compile time)和執行時(runtime)的區別

...析和程式碼生成等任務在編譯時發生。執行編譯時生成的可執行檔案的時間段稱為執行時。這兩個術語都與不同的程式生命週期階段有關。本文討論編譯時和執行時之間的區別。編譯時和執行時的關鍵區別在於,編譯時是將原始...

  • 發佈於 2020-10-19 10:25
  • 閲讀 ( 57 )

路徑(path)和類路徑(classpath)的區別

...asspath的關鍵區別在於,path是一個環境變數,用於引用Java可執行檔案的位置,而classpath是一個用於引用類檔案位置的環境變數。 目錄 1. 概述和主要區別 2. 什麼是路徑 3. 什麼是類路徑 4. 路徑與類路徑的相似性 5. 並排比較-表格...

  • 發佈於 2020-10-19 11:04
  • 閲讀 ( 48 )

源程式(source program)和目標程式(object program)的區別

...寫的可讀程式,而目標程式是透過編譯源程式建立的機器可執行程式。 源程式可以編譯或解釋以供執行。反編譯器有助於將目標程式轉換回其原始源程式。需要注意的是,術語源程式和目標程式是作為相關術語使用的。如果你...

  • 發佈於 2020-10-26 14:27
  • 閲讀 ( 48 )

繡花線(embroidery thread)和縫紉線(sewing thread)的區別

繡花線(embroidery thread)和縫紉線(sewing thread)的區別 線是長而細的棉、尼龍或其他用於縫紉的纖維。繡花線和縫紉線是縫紉用的兩種線。繡花線和縫紉線的主要區別在於它們的質地;繡花線是用於刺繡的一種特殊型別的線,具有...

  • 發佈於 2020-10-26 23:46
  • 閲讀 ( 48 )

過程(process)和線(thread)的區別

程序與執行緒 為了讓計算機一次完成多個活動,程序和執行緒都提供了很好的服務,但它們在操作方式上是有區別的。計算機上執行的所有程式都至少使用一個程序或執行緒。程序和執行緒允許處理器在共享計算機資源的同...

  • 發佈於 2020-10-29 12:02
  • 閲讀 ( 46 )

扁桃(platyhelminthes)和線蟲(nematoda)的區別

...常簡單。儘管它們很簡單,但它們像其他複雜的動物一樣執行生命中所有重要的身體功能(呼吸、食物消耗、繁殖、防禦等)。本文的重點是扁形動物和線蟲的區別;然而,個體生物的形態,即扁形動物的形態和線蟲的形態也將...

  • 發佈於 2020-10-29 13:38
  • 閲讀 ( 44 )

java8lambdas簡介

...您需要將任務定義為可執行介面並實現run()方法。這裡Runnable是一個函式介面。 ...

  • 發佈於 2021-03-12 08:09
  • 閲讀 ( 46 )
野良神YLSLM
野良神YLSLM

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章