實現執行緒3種方式

2021-08-28 01:52:57 字數 1200 閱讀 8161

1、繼承thread實現。

2、實現runnable介面。

3、實現callable介面,用futuretask接收返回值。

總結:其實執行緒最核心的是runnable,因為thread和futuretask都繼承該介面來實現具體功能,即拓展實現。而thread實現的start0()方法,其呼叫本地方法開啟新執行緒。

看第三種:

1)其中futuretask繼承了runnable介面,所以可以當做乙個執行緒來處理,並得到返回值。

2)future.get()的方法實現由必要看一下,當執行緒未執行或未結束時,會阻塞當前執行緒,直到該執行緒執行完畢。

3)為什麼可以獲得返回值呢?看下future.run()就懂了,對runnable的run()包裝了一層,呼叫繼承callable的方法獲得返回值儲存給當前future,詳見**2。

**1(測試**):

public static void main(string args) throws filenotfoundexception, interruptedexception, executionexception 

});system.out.println(future.isdone());

new mythread(future).start();

new thread(future).start();

system.out.println(future.get()); }

static class mythread extends thread

@override

public void run() catch (exception e)

} }

輸出:

false

獲取到了182

182

**2(futuretask實現方法):

public void run()  catch (throwable ex) 

if (ran)

set(result);

}} finally

}

執行緒通訊 3種方式

一 傳統執行緒通訊 synchronized wait notify object類的wait notify notifyall 三個方法必須由同步監視器物件來呼叫,分兩種情況 a 同步方法,該類預設例項 this 就是同步監視器,可以在同步方法中可以直接呼叫 b 同步 塊,同步監視器是synchr...

使用者態多執行緒的3種實現方式

使用者態的執行緒概念和核心態的執行緒概念不同。有三種模式,分別是 1 一對一 使用者態乙個執行緒對應核心態乙個執行緒。使用者態的執行緒併發執行,是真的併發執行。乙個執行緒阻塞,不會影響其它執行緒。缺點 a 許多系統限制核心執行緒數量,這就直接限制了使用者態的執行緒數量。b 許多系統中,核心執行緒間的...

建立執行緒的3種方式

1 定義thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run 方法稱為執行體。2 建立thread子類的例項,即建立了執行緒物件。3 呼叫執行緒物件的start 方法來啟動該執行緒。public class mythread extends th...