1、繼承thread類:
步驟:①、定義類繼承thread;
②、複寫thread類中的run方法;
目的:將自定義**儲存在run方法,讓執行緒執行
③、呼叫執行緒的start方法:
該方法有兩步:啟動執行緒,呼叫run方法。
1 public class threaddemo12、實現runnable介面:介面應該由那些打算通過某一線程執行其實例的類來實現。類必須定義乙個稱為run 的無參方法。15 }
16 }
17 //繼承thread類
18 class threaddemo extends thread
24 //重寫run方法。
25 public void run()
29 }
30 }
實現步驟: ①、定義類實現runnable介面
②、覆蓋runnable介面中的run方法
將執行緒要執行的**放在該run方法中。
③、通過thread類建立執行緒物件。
④、將runnable介面的子類物件作為實際引數傳遞給thread類的建構函式。
自定義的run方法所屬的物件是runnable介面的子類物件。所以要讓執行緒執行指定物件的run方法就要先明確run方法所屬物件
⑤、呼叫thread類的start方法開啟執行緒並呼叫runnable介面子類的run方法。
public class runnabledemo3、通過callable和future建立執行緒:}//定義類實現runnable介面
class runtest implements runnable}}
}
實現步驟:①、建立callable介面的實現類,並實現call()方法,改方法將作為執行緒執行體,且具有返回值。
②、建立callable實現類的例項,使用futruetask類進行包裝callable物件,futuretask物件封裝了callable物件的call()方法的返回值
③、使用futuretask物件作為thread物件啟動新執行緒。
④、呼叫futuretask物件的get()方法獲取子執行緒執行結束後的返回值。
1 public class callablefutruetest三種方法對比:13 }
14 //獲取並輸出子執行緒call()方法的返回值
15 try catch (interruptedexception e) catch (executionexception e)
22 }
23 }
24 class callabletest implements callable
31 return i;
32 }
33 }
繼承thread:執行緒**存放在thread子類run方法中。
優勢:編寫簡單,可直接用this.getname()獲取當前執行緒,不必使用thread.currentthread()方法。
劣勢:已經繼承了thread類,無法再繼承其他類。
實現runnable:執行緒**存放在介面的子類的run方法中。
優勢:避免了單繼承的侷限性、多個執行緒可以共享乙個target物件,非常適合多執行緒處理同乙份資源的情形。
劣勢:比較複雜、訪問執行緒必須使用thread.currentthread()方法、無返回值。
實現callable:
優勢:有返回值、避免了單繼承的侷限性、多個執行緒可以共享乙個target物件,非常適合多執行緒處理同乙份資源的情形。
劣勢:比較複雜、訪問執行緒必須使用thread.currentthread()方法
建議使用實現介面的方式建立多執行緒。
iOS 建立多執行緒的三種方法
1 通過nsobject的方法建立執行緒 這個方法會自動開闢乙個後台執行緒,引數1 在這個後台執行緒中執行的方法,引數2 用於傳遞引數 self performselectorinbackground selector banzhuanplus withobject nil 第一步 建立執行緒 ns...
Java建立執行緒Thread的三種方法
1.通過繼承thread類建立執行緒 1 繼承thread類,重寫run 方法 2 建立繼承了thread類的類的物件,呼叫物件的start方法開啟執行緒 2.通過實現runnable介面建立執行緒 1 實現runnable介面,重寫run 方法 2 建立實現了runnable介面的類的物件,將物件...
建立物件的三種方法
三種方式 利用字面量建立物件 物件字面量 就是花括號 裡面包含了表達這個具體事物 物件 的屬性和方法。var a 1.裡面的屬性或者方法我們採取鍵值對的形式鍵屬性名 值屬性值 2.多個屬性或者方法中間用逗號隔開的 3.方法冒號後面跟的是乙個匿名函式 使用物件 1.呼叫物件的屬性我們採取物件名.屬性名...