实现Callable接口方式创建多线程
作者:互联网
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(); } } }
标签:Runnable,java,sum,Callable,futureTask,FutureTask,多线程,接口方式 来源: https://www.cnblogs.com/lxh-daniel/p/16673118.html