多線程一

一、創建線程方式
 

    1、繼承Thread類創建線程
        a. 定義Thread類的子類,並重寫該類的run方法 
        b. 創建Thread子類的實例
        c. 調用start方法來啓動線程

    2、 通過Runnable接口創建線程
        a. 定義runnable接口的實現類,並重寫該接口的run方法
        b.  創建Runnable實現類的實例,並依次實例作爲Thread的參數來創建Thread對象
        c. 調用線程對象的start方法來啓動線程

    3、通過Callable和Future創建線程
        a. 創建接口的實現類,並實現call方法(與Runnable中的run方法類似)
        b. 創建Callable實現類的實例,使用FutureTask類包裝Callable對象,該FutureTask對象封裝了Callable對象的call方法的返回值
        c. 使用FutureTask對象作爲Thread對象的參數創建並啓動新線程
        d. 調用FutureTask對象的get方法來獲取子線程執行結束後的返回值

二、創建線程三種方式對比
 

    採用接口的優勢:線程只是實現了Runnable接口或Callable接口,還可以繼承其他類。
                                在這種方式下,多線程可以共享同一個參數(target)對象,
                                所以非常適合多個相同的線程來處理同一份資源的情況。

三、常用方法
 

    Thread.sleep()------>哪個線程執行到sleep方法,哪個線程就sleep(sleep是靜態方法,不管調用者是誰,都是當前線程sleep)
    interrupt()------>結束該線程當前的阻塞狀態
    join()------>其他線程等待調用該方法的這個線程執行結束
    Thread.yield()------>主動放棄cpu把機會讓給別的線程,然後參與競爭Running—>ready

四、注意
    wait()方法和notify()方法都屬於  java.lang.Object  而不是  java.lang.Thread
發佈了21 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章