線程的三種實現方式詳解

一     繼承thread類spa

1.定義Thread的子類,重寫run()方法,run()方法表明了線程要完成的任務,run()方法稱爲線程執行體線程

2.建立Thread子類的實例,子類對象就是線程,3d

3. 調用線程對象的start()方法來啓動線程對象

 

 

運行結果以下圖所示:blog

 

 

 

二:實現runnable接口繼承

1.定義runnable接口的實現類,重寫run()方法,run()方法是線程的執行體接口

2,.建立Runnable實現類的實例,Runnable自己就是Thread類的方法,因此建立線程還要建立一個Thread類來包裝Runnable對象get

3.調用線程對象的start()方法來啓動線it

 

 

 

運行結果以下圖所示io

 

 

 

三:實現Callable接口建立線程類

在Java5以後就開始提供Callable接口,該接口是Runnable接口的加強版,Callable接口提供了一個call()方法做爲線程執行體,call()方法可

以有返回值,call()方法能夠聲明拋出異常。

boolean cancel(boolean may)師徒取消該Futrue裏關聯的Callable任務

V get() 返回Call任務裏call方法的返回值。調用該方法會形成線程阻塞,必須等待子線程結束後纔會獲得返回值。

V get(long timeout,TimeUnit unit)返回Call任務裏call方法的返回值,該方法限定程序最多阻塞timeout和unit指定的時間,

若是超過指定時間尚未返回值,將會拋出TimeOutException異常

boolean isCancelled()若是在Callable任務正常完成前被取消,則返回true

boolean isDone() 若是Callable任務完成則返回true。

 

Callable的實現步驟以下:

  1建立Callable接口的實現類,並實現call方法

 2使用FutureTask類包裝Callable對象

3使用FutrueTask對象做爲Thread對象的target建立並啓動新線程

4啓用FutrueTask對象的get()方法得到子線程的返回值。

 

 運行結果以下圖所示:

相關文章
相關標籤/搜索