2017-01-28 17 views
0

執行人服務有以下方法 -是否有來自呼叫提交執行服務的可運行實例獲得Future對象上使用get一個用例

Future<?> submit(Runnable task); 

現在可運行不同Callabe不返回任何東西(它的返回類型爲void )。所以調用get未來的對象給我null爲一個Runnable任務提交。

ExecutorService service = null; 
    try { 
    service = Executors.newSingleThreadExecutor(); 
    Future<?> result = service.submit(() -> System.out.println("My 1st ThreadId : " + Thread.currentThread().getId())); 
    System.out.println(result.get()); 
    } finally { 
    if(service != null) service.shutdown(); 
    } 

My 1st ThreadId : 10 
null 

這可能會是一個阻塞調用,如果Runnable任務還沒有結束返回null了。想知道是否有一個實際的使用案例,通過調用提交給執行器服務返回可運行任務返回的未來對象。

回答

2

最大的用例就是等待任務完成。通常,如果你想同時踢幾件事並等待它們完成,通常就完成了。

0

如果您想確保Runnable成功執行,沒有任何異常,調用Future.get()會有意義。但是,如果發生異常,get()也會引發(另一個)異常。

相關問題