關於子執行緒出現異常主線程獲取的問題

2021-09-09 04:39:28 字數 942 閱讀 5966

通過執行緒的不常用的乙個介面callable來接收這個執行緒返回的狀態

廢話不多說直接上**。

因為子執行緒中@autowired註解不可以注入bean 我通過構造注入的方式來注入deparmentrep

futuretaskfuturetask = new futuretask<>(new mycallable(deparmentrep));// 建立乙個 futuretask,一旦執行就執行給定的 callable執行緒。

executorservice service = executors.newcachedthreadpool();// 建立乙個可根據需要建立新執行緒的執行緒池,但是在以前構造的執行緒可用時將重用它們。

service.execute(futuretask);//在未來某個時間執行給定的命令。

string msg = futuretask.get();//獲得執行緒返回的狀態

public class mycallable implements callable

deparment deparment = new deparment();

@autowired

public string call() catch (exception e)

}}

返回結果並且可能丟擲異常的任務。實現者定義了乙個不帶任何引數的叫做 call 的方法。

callable 介面類似於runnable,兩者都是為那些其實例可能被另乙個執行緒執行的類設計的。但是 runnable 不會返回結果,並且無法丟擲經過檢查的異常。

executors類包含一些從其他普通形式轉換成 callable 類的實用方法。

從以下版本開始:

1.5另請參見:

executor

如何主線程捕獲子執行緒的異常

第乙個 子執行緒類 public class threadexceptionrunner implements runnable 第二步 主線程類 在最後面有我自定義的兩個class是作為配置用的,有解釋 public class demothread 1 首先 實現乙個 thread.uccaug...

子執行緒異常丟擲 及 主線程事務回滾

業務模型期望的結果是這樣的,檢測子執行緒的異常情況,如果發生異常,主線程回滾,否則提交 2.如果執行緒丟擲unchecked runnable exception,則執行緒終結,主線程不受影響。所以使用runnable,主線程壓根不知道子執行緒的情況,事務更無從談起。所以使用callable機制 兩...

關於子執行緒與主線程與hander通訊

子執行緒不能更新ui,主線程不能做耗時操作。操做流程是 子執行緒耗時完畢傳給handler sendmessage再傳給messagequeue再給looper最後傳給ui執行緒。arg1 arg2傳遞整數型。obj傳輸大部分。what屬性判斷。通過time integer.parseint ed1...