1. 程式人生 > >最近在研究多線程,淺談JAVA中多線程的幾種實現方式

最近在研究多線程,淺談JAVA中多線程的幾種實現方式

進行 數據 使用 導致 效率問題 多線程 方法 sta img

多線程的實現方式:

  個人認為,要說多線程的實現方式,萬變不離其宗,最基本的就是兩種1.繼承Thread類;2.實現runnable接口,本質上來說就是用來啟動線程執行任務的過程,具體來說的話,通過這兩周方式變種為多種實現方式。此處簡單舉例最基本的兩類類

1.繼承Thread類

  技術分享圖片

運行結果:

  技術分享圖片

  這裏要註意,在啟動線程的時候,我們並不是調用線程類的run方法,而是調用了線程類的start方法。這塊實際上是用了設計模式中的模板方法模式,Thread類作為模板,而run方法是在變化的因此放到子類。

2.實現Runnable

  其實Runnable就是一個線程任務,線程任務和線程的控制分離,這也就是上面所說的解耦。我們要實現一個線程,可以借助Thread類,Thread類要執行的任務就可以由實現了Runnable接口的類來處理。 這就是Runnable的精髓之所在!

使用Runnable實現上面的例子步驟如下:

  定義一個類實現Runnable接口,作為線程任務類
  重寫run方法,並實現方法體,方法體的代碼就是線程所執行的代碼
  定義一個可以運行的類,並在main方法中創建線程任務類
  創建Thread類,並將線程任務類做為Thread類的構造方法傳入
  啟動線程

  技術分享圖片

  運行結果

  技術分享圖片

這塊簡單說下我的理解吧,線程的運行和線程的控制分離的,這一點還是很有用的,一個任務,我們可以通過多線程的形式來進行實現,當數據量多,或者業務需求中,接口調用頻繁,多線程是至關重要的,但是切記線程安全問題,線程還可以通過內部類,定時器的形式來實現的,最後再說一點,可以有帶返回值的多線程實現方式喲。這塊我就不詳說了 有好多博主有具體寫過。有興趣的可以去看下,明天準備就最近的業務需要,多次接口調用導致的效率問題,利用線程池效果明顯體會,簡單說下線程池的原理及使用場景優缺點,bingo goodnight??????

最近在研究多線程,淺談JAVA中多線程的幾種實現方式