callable实现多线程
线程的实现方式有三种:
1、extends Thread ,简单方便,但只能单继承,能做的事情少
2、implements Runnable ,很方便,但无法获取返回值
3、implements Callable ,可以获得返回值,返回值可自行定义
本章节介绍下callable使用
1、创建一个类,实现callable
public class MyCallable implements Callable<String> { private int a ; public MyCallable(int a){ this.a = a; } @Override public String call() throws Exception { Thread.sleep(4000); int sum = 0; for (int i = 0; i < a; i++) { sum += i; } return "线程求和:" + sum; } }
使用main去测试
public class MyMain2 { public static void main(String[] args) throws ExecutionException, InterruptedException { Callable<String> callable = new MyCallable(100); FutureTask<String> f1 = new FutureTask<>(callable); new Thread(f1).start(); String s = f1.get(); System.out.println("s = " + s); } }
1、创建任务对象
①、定义一个类实现Callable接口,重写call方法,封装要做的事情,和要返回的数据
②、把Callable类型的对象封装成FutureTask(线程任务对象)。
2、把线程任务对象交给Thread对象。
3、调用Thread对象的start方法启动线程,
4、线程执行完毕后、通过FutureTask对象的的qet方法去获取线程任务执行的结果。
实际开发中,可以返回一个对象的,只需要在implements Callable<对象>,然后在run方法return对象即可。
以上内容纯属学习~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)