java並發包(一)Callable接口


剛開始使用java線程的時候,使用都是Thread或Runnable接口。最近發現java並發包下,提供了一個與Runnable接口類似的Callable接口。Callable提供了比Runnable更靈活和寬松的call()。

Callable類似於Runnable接口,實現Callable接口的類和實現Runnable的類都是可被其它線程執行的任務

Callable經常和java線程池一起啟用:

//創建線程池
ExecutorService threadPool = Executors.newSingleThreadExecutor();

//TaskCallabl是Callable的實現類
Future<String> future = threadPool.submit(new TaskCallable());

//獲取線程執行結果
System.out.println(future.get());

threadPool.shutdown();
 

Callable  的使用如下

/**
* Callable類似於Runnable接口,實現Callable接口的類和實現Runnable的類都是可被其它線程執行的任務。
*
* 當將一個Callable的對象或Runnable對象
* ,傳遞給ExecutorService的submit方法,則該對象的call()或run()會自動在一個線程上執行, 並且會返回執行結果Future對象
*
* Callable和Runnable有以下幾點不同:<br>
* (1)、Callable規定的方法是call(),而Runnable規定的方法是run().<br>
* (2)、Callable的任務執行后可返回值,而Runnable的任務是不能返回值的.<br>
* (3)、call()方法可拋出異常,而run()方法是不能拋出異常的.<br>
* (4)、運行Callable任務可拿到一個Future對象,獲取線程的執行結果.<br>
*/
class TaskCallable implements Callable<String>
{

@Override
public String call() throws Exception
{
Thread.sleep(2000);
return "futureResult";
}

}
原文:https://blog.csdn.net/love_yu_xiu/article/details/84467701


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM