從執行緒中產生返回值--Callable介面
阿新 • • 發佈:2019-02-18
Runnable是執行工作的獨立執行緒,但是它不返回任何值。如果你希望執行緒在完成時能夠返回一個值,那麼可以實現Callable介面而不是Runnable介面。在Java SE5中引入的Callable是一種具有型別引數的泛型,它的型別引數表示的是從方法call()(而不是run())中返回的值,並且必須使用ExecutorService.submit()方法呼叫它。
執行緒程式碼:
public class ResulttThread implements Callable<String> {
private int id;
public ResulttThread(int id) {
this.id = id;
}
@Override
public String call() throws Exception {
return "The result id is " + id;
}
}
呼叫程式碼:
Future<String> future;
ExecutorService mService = Executors.newCachedThreadPool();
for (int i = 0; i < 5; i++) {
future = mService.submit(new ResulttThread(i));
System.out.println(future.get());
}