資料內(nèi)容:
一、新增方式1:實現(xiàn)Callable接口
(1)介紹
【Callable接口】
@FunctionalInterface
public interface Callable<V> {
/**
* Computes a result, or throws an exception if unable to do so.
*
* @return computed result
* @throws Exception if unable to compute a result
*/
V call() throws Exception;
}
<>是泛型的意思,V決定了call()方法返回值的類型。
與使用 Runnable 相比, Callable 功能更強大些
相比 run() 方法,可以有返回值。
方法可以拋出異常。
支持泛型的返回值(需要借助FutureTask類,獲取返回結(jié)果)。
Future 接口(了解)
可以對具體Runnable、Callable任務(wù)的執(zhí)行結(jié)果進行取消、查詢是否完成、獲取結(jié)
果等。
FutureTask是Futrue接口的唯一的實現(xiàn)類。
FutureTask 同時實現(xiàn)了Runnable, Future接口。它既可以作為Runnable被線程執(zhí)
行,又可以作為Future得到Callable的返回值。
缺點:在獲取分線程執(zhí)行結(jié)果的時候,當(dāng)前線程(或是主線程)受阻塞,效率較低。