1.继承Thread类
2.实现implement接口
3.实现Callable接口
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class testCallable { public static void main(String[] args) { Test test = new Test(); //调用Callable需要构造一个FutureTast装载实现Callable的类 FutureTask<Integer> futureTask = new FutureTask<>(test); //FutureTask继承了Runnable接口 Thread t = new Thread(futureTask); t.start(); try { //可通过get()方法获取线程返回的值 //try/catch捕获异常 System.out.println(futureTask.get());; } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } } //实现Callable接口 class Test implements Callable<Integer>{ //重写call方法,相比run方法更加强大, //能返回值和抛出异常 @Override public Integer call() throws Exception { int sum=0; for (int i = 1; i <=100; i++) { System.out.println(i); sum+=i; } return sum; } }
原文:https://www.cnblogs.com/shouyaya/p/13391432.html