利用 Callable 接口 和 Future 接口方式实现:这种实现方式可以获取到多线程运行的结果
步骤:
1. 创建一个类,类名比如叫 MyCallable,并实现 Callable 接口
注:Callable 接口有一个泛型,因为这种方式可以获取到多线程运行的结果,泛型就表示结果的类型
2. 重写 Callable 接口里面的抽象方法 call(),这个抽象方法有返回值,返回值表示 多线程运行的结果,返回值的类型跟 Callable 接口的泛型是一致的
3. 测试类里面先创建 MyCallable 类的对象,这个对象就表示 多线程要执行的任务
4. 创建 Future 接口的实现类 FutureTask 的对象 ft,用来管理多线程运行的结果(泛型表示多线程运行的结果)
5. 创建 Thread 类的对象,表示线程
6. 开启线程
7. 获取多线程运行的结果:ft.get(),返回值就是结果
代码示例:
package pojo;
import java.util.concurrent.Callable;
public class MyCallable implements Callable<Integer> {
@Override
public Integer call() throws Exception {
//求 1到100 之间的和
int sum = 0;
for (int i = 1; i <= 100; i++)
sum += i;
return sum;
}
}
-------------------------------------------------------------
package test;
import pojo.MyCallable;
import pojo.MyRun;
import pojo.MyThread;
import java.util.concurrent.FutureTask;
public class Test13_ThreadDemo {
public static void main(String[] args) throws Exception {
MyCallable mc = new MyCallable();
//用FutureTask的实例化对象 ft 来管理 mc 的结果
FutureTask<Integer> ft = new FutureTask<>(mc);
Thread t1 = new Thread(ft);
t1.start();
//获取多线程运行的结果
Integer result = ft.get();
System.out.println(result);
}
}
标签:Java,MyCallable,接口,Callable,import,ft,多线程 From: https://www.cnblogs.com/gagaya2/p/17792608.html