執行緒的四種建立方式學習總結

2021-10-12 02:18:50 字數 2645 閱讀 8161

建立乙個繼承於therad類的子類

重寫therad類的run()->將此執行緒執行的操作宣告在run()中

建立thread類的子類的物件

通過此物件呼叫start():啟動當前執行緒,呼叫當前執行緒的run()

//* 1. 建立乙個繼承於thread類的子類

class threaddome extends thread

//* 2. 重寫thread類的run() --> 將此執行緒執行的操作宣告在run()中

@override

public void run()

}public class threadtest

}

建立乙個實現了runnable介面的類

實現類去實現runnable中的抽象方法:run()

建立實現類的物件

將此物件作為引數傳遞到thread類的構造器中,建立thread類的物件

通過thread類的物件呼叫start()

//* 1. 建立乙個實現了runnable介面的類

class runnabledome implements runnable

//* 2. 重寫runnable介面的抽象方法run()

@override

public void run()

}public class runnabletest

}).start();

}}

問題一:我們啟動乙個執行緒,必須呼叫start(),不能呼叫run()的方式啟動執行緒。

問題二:如果再啟動乙個執行緒,必須重新建立乙個thread子類的物件,呼叫此物件的start().

開發中:優先選擇:實現runnable介面的方式

原因:1.實現的方式沒類的單繼承性的侷限性

2.實現的方式更適合來處理多個執行緒共享資料的情況

聯絡:原始碼中  public  class thread implements runnable

相同點:兩種方式都需要重寫run(),將執行緒要執行的邏輯宣告在run()中。

目前兩種方式,要想啟動執行緒,都是呼叫的thread類中的start()。

jdk1.5之後新增了兩種執行緒建立方式

1.建立乙個實現callable的實現類

2.實現call方法,將此執行緒需要執行的操作宣告在call()中

3.建立callable介面實現類的物件

4.將此callable介面實現類的物件作為傳遞到futuretask構造器中,建立futuretask的物件

5.將futuretask的物件作為引數傳遞到thread類的構造器中,建立thread物件,並呼叫start()

6.獲取callable中call方法的返回值

//1.建立乙個實現callable的實現類

class numthread implements callable

}return sum;

}}public class threadnew catch (interruptedexception e) catch (executionexception e)

}}

**二:

public class test

} //1 建立callable的實現類

class mycall implements callable

return sum;

}}

說明:

* 如何理解實現callable介面的方式建立多執行緒比實現runnable介面建立多執行緒方式強大?

* 1. call()可以返回值的。

* 2. call()可以丟擲異常,被外面的操作捕獲,獲取異常的資訊

* 3. callable是支援泛型的

建立執行緒池物件

建立runnable介面子類物件。(task)

提交runnable介面子類物件。 (take task)

關閉執行緒池(一般不做)。

public class threadpool 

});//適合適用於runnable

callable);//適合使用於callable

//4.關閉連線池

service.shutdown();

}}

**二:

public class test

}//1 建立runnable介面的實現類

class myrun implements runnable

}

說明:

* 好處:

* 1.提高響應速度(減少了建立新執行緒的時間)

* 2.降低資源消耗(重複利用執行緒池中線程,不需要每次都建立)

* 3.便於執行緒管理

*      corepoolsize:核心池的大小

*      maximumpoolsize:最大執行緒數

*      keepalivetime:執行緒沒任務時最多保持多長時間後會終止

建立執行緒的四種方式

1.繼承於thread類,重寫run 方法 2.實現runable介面,實現裡面的run 方法 前兩種不用多說 3.使用 futuretask 實現有返回結果的執行緒,可以返回執行緒執行結果 public class test class mycallable implements callable...

建立執行緒的四種方式

class thread00 extends thread class thread01 implements runnable class thread02 implements callable 對以上三種方法進行測試 測試四種建立執行緒的方式 public class newthread 輸出...

建立執行緒的四種方式

首先我們先來了解一下測試thread中的常用方法 一 繼承thread類 二 實現runnable介面 三 實現callable介面 四 使用執行緒池建立 建立執行緒方式一 繼承thread類 繼承thread類建立執行緒的步驟為 1 新建乙個主類,然後再建立乙個類繼承thread的子類。2 重寫t...