import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
class NumThread implements Callable {
// 输出100及100以内的偶数
@Override
public Object call() throws Exception {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
System.out.println(i);
sum += i;
}
}
return sum;
}
}
// 测试
public class CallableTest {
public static void main(String[] args) {
NumThread numThread = new NumThread();
/*
* ->FutrueTask是Futrue接口的唯一的实现类
* ->FutureTask同时实现了Runnable, Future接口。
* 它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。
*/
// FutureTask 实现 RunnableFuture,RunnableFuture 继承 Runnable
FutureTask futureTask = new FutureTask<Object>(numThread);
// 相当于实现了Runnable所以可以这样调用
new Thread(futureTask).start();
try {
// get()返回值即为FutureTask构造器参数Callable实现类重写的call()的返回值。
Object sum = futureTask.get();
System.out.println("总和为:" + sum);
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/288464.html