|NO.Z.00108|——————————|BigDataEnd|——|Java&多线程.V20|——|Java.v20|创建启动线程|方式三|
一、创建和启动线程的方式三
### --- 线程池(熟悉)
### --- 实现Callable接口
——> 从Java5开始新增加创建线程的第三种方式为实现java.util.concurrent.Callable接口。
二、常用的方法如下:
方法声明 | 功能介绍 |
V call() | 计算结果并返回 |
### --- FutureTask类
——> java.util.concurrent.FutureTask类用于描述可取消的异步计算,
——> 该类提供了Future接口的基本实现,
——> 包括启动和取消计算、查询计算是否完成以及检索计算结果的方法,
——> 也可以用于获取方法调用后的返回结果。
三、常用的方法如下:
方法声明 | 功能介绍 |
FutureTask(Callable callable) | 根据参数指定的引用来创建一个未来任务 |
V get() | 获取call方法计算的结果 |
四、编程代码
package com.yanqi.task18;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class ThreadCallableTest implements Callable {
@Override
public Object call() throws Exception {
// 计算1 ~ 10000之间的累加和并打印返回
int sum = 0;
for (int i = 1; i <= 10000; i++) {
sum +=i;
}
System.out.println("计算的累加和是:" + sum); // 50005000
return sum;
}
public static void main(String[] args) {
ThreadCallableTest tct = new ThreadCallableTest();
FutureTask ft = new FutureTask(tct);
Thread t1 = new Thread(ft);
t1.start();
Object obj = null;
try {
obj = ft.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println("线程处理方法的返回值是:" + obj); // 50005000
}
}
五、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=52649:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task18.ThreadCallableTest
计算的累加和是:50005000
线程处理方法的返回值是:50005000
Process finished with exit code 0
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」