一 繼承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()方法得到子線程的返回值。
運行結果以下圖所示: