1. 程式人生 > >[轉載]Java線程的兩種實現方式

[轉載]Java線程的兩種實現方式

分享 src 能力 class c89 href ade run fun

轉載:http://baijiahao.baidu.com/s?id=1602265641578157555&wfr=spider&for=pc

前言

線程是程序的一條執行線索,執行路徑,是程序使用cpu的最小單位。線程本身不能運行,它只能運行在程序中,線程是依賴於程序存在的。

多線程的意義

其實任何一個程序的執行都需要獲得cpu的執行權,是由cpu來去決定到底是由哪個程序來去執行,那麽多線程的存在其實就是“最大限度的利用cpu資源”,當某一個線程的處理不需要占用cpu而之和I/O打交道的時候,讓需要占用cpu資源的其他線程有機會獲得cpu資源。從根本上說,這就是說多線程編程的目的。

多線程的目的

不同於其他大多數編程語言,Java本身內置了多線程的支持。使用多線程,可以幫助我們編寫出cpu最大利用率的高效程序,使得空閑時間降到最低,這個對於Java運行的交互式的網絡互聯環境是至關重要的,因為空閑時間是公共的。例如,網絡的傳輸效率遠遠低於計算機的處理速度,而本地文件系統資源的讀寫速度也遠遠低於cpu的處理能力。多線程使得並且能夠充分利用這些空閑時間。

Thread類說明

我們知道Java是面向對象的語言,一切皆對象,那麽線程本身也是一個東西,一個事務,那麽也應該由一個類來去表示,這個類就是Thread。下面是JDK的說明。

技術分享圖片

線程的實現方式

從JDK的文檔上看,在Java中實現線程有兩種方式,一種是繼承Thread類,另一種是實現Runnable接口。

1、繼承Thread類

技術分享圖片

總結:我們應該要把線程執行的代碼放到run方法中,啟動線程使用start方法。如果使用run方法,則這個不叫線程的運行,而是叫普通方法的調用。

2、實現Runnable接口

技術分享圖片

總結

使用繼承Thread類和實現Runnable接口的關系和區別:

  • Thread類本身也是實現了Runnable接口,因此也是實現了Runnable接口中的run方法。
  • 當使用繼承Thread類去實現線程時,我們需要重寫run方法,因為Thread類中的run方法本身什麽事情都不幹。
  • 當使用實現Runnable接口去實現線程時,我們需要重寫run方法,然後使用new Thread(Runnable)這種方式來生成線程對象,這個時候線程對象中的run方法才會去執行我們自己實現的Runnable接口中的run方法。

[轉載]Java線程的兩種實現方式