Java继承 多线程的实现方式——利用 Callable 接口 和 Future 接口方式实现

发布时间 2023-10-27 16:20:46作者: 嘎嘎鸭2

利用 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);
}
}