3、创建线程方式三:实现Callable接口
一、步骤
1、定义一个线程任务类实现Callable接口,声明线程执行的结果类型。
2、重写线程任务类的call()方法,这个方法可以直接返回执行的结果。
3、创建一个Callable的线程任务对象。
4、把Callable的线程任务对象包装成一个未来任务对象。
5、把未来任务对象包装成线程对象。
6、调用线程start()方法,启动线程。
7、获取线程执行结果。
二、代码
package com.zjl.study.多线程;import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;/*** Created by zjl 2022/5/28**/
public class 创建线程方式3 {public static void main(String[] args) {// 3、创建一个Callable的线程任务对象。MyCallable myCallable = new MyCallable();// 4、把Callable的线程任务对象包装成一个未来任务对象。FutureTask<String> futureTask = new FutureTask<>(myCallable);// 5、把未来任务对象包装成线程对象。Thread thread = new Thread(futureTask);// 6、调用线程start()方法,启动线程。thread.start();// 7、获取线程执行结果。如果此时获取结果的任务还未执行完成,会让出CPU,直至任务执行完成才获取结果。try {String s = futureTask.get();System.out.println(s);} catch (Exception e) {e.printStackTrace();}}}// 1、定义一个线程任务类实现Callable接口,声明线程执行的结果类型。
class MyCallable implements Callable<String> {// 2、重写线程任务类的call()方法,这个方法可以直接返回执行的结果。@Overridepublic String call() throws Exception {return "子线程任务执行,线程名称为:" + Thread.currentThread().getName();}
}
三、运行结果
四、优缺点
1、缺点
- 代码复杂
2、优点
- 线程任务只是实现了Callable接口,可以继续继承其他类,而且可以继续实现其他接口。
- 同一个线程任务对象可以被包装成多个线程对象。
- 适合多个线程去共享同一个资源。
- 实现解耦操作,线程任务代码可以被多个线程共享,线程任务代码和线程独立。
- 线程池可以放入Runnable接口和Callable接口。
- 可以得到线程执行结果。
3、创建线程方式三:实现Callable接口相关推荐
- 三种创建线程方式之Callable接口
一.类继承关系及API解析 Callable接口 @FunctionalInterface public interface Callable<V> {V call() throws Ex ...
- 创建线程的第三种方式:实现Callable接口(含部分源码解析)
创建线程的第三种方式--实现Callable接口 package com.lqy.Multithreading; import java.util.concurrent.Callable; impor ...
- 线程创建方式3-实现 callable接口(Java)
线程创建方式3-实现 callable接口(Java) 线程创建方式三:实现 callable接口 callable的好处: 1.可以定返回值 2.可以抛出异常 package src.Demo02; ...
- java 创建线程_【80期】说出Java创建线程的三种方式及对比
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...
- Java 创建线程的三种方式
一.继承Thread类创建 1.定义一个类继承Thread类,并重写Thread类的run()方法,run()方法的方法体就是线程要完成的任务,因此把run()称为线程的执行体: 2.创建该类的实例对 ...
- Java创建线程的三种方式
一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实 ...
- 创建线程的三种方式、线程运行原理、常见方法、线程状态
文章目录 1.创建线程的三种方式 1.1 继承Thread类并重写run方法 1.2 使用Runnable配合Thread 1.3 通过Callable和FutureTask创建线程 2.Runnab ...
- 一、创建线程的三种方式
一.创建线程 开启一个线程的方法: 继承 Threrad 重写 run方法,调用 start 开启线程 实现 Runnable 接口实现 run方法,创建 Thread 时作为参数传递并调用 star ...
- java 多线程编程(包括创建线程的三种方式、线程的生命周期、线程的调度策略、线程同步、线程通信、线程池、死锁等)
1 多线程的基础知识 1.1 单核CPU和多核CPU 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务.微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那 ...
最新文章
- satd残差_RDO、SAD、SATD、λ(转贴) - [h.264]
- teechart属性和方法
- [杂记]对RSA算法的数学原理的一点思考
- 当随机不够随机:一个在线扑克游戏的教训
- .NET Core 调用百度 PaddleOCR 识别图文
- 使用系统规则测试System.in和System.out
- duration java_Java Duration类| minusMillis()方法与示例
- element 保存 点击链接_保存微信表情!
- Java随机生成_0--2π_使用随机数计算PI
- ElasticSearch的优点
- Xcode和macOS对应关系查询网址
- Linux中ssh远程登录服务、SSH免密登录
- c语言程序设计职工信息管理系统,C语言程序设计-职工信息管理系统.doc
- PuTTYgen 使用
- 购物中心弱电智能化系统工程施工方案
- Maxcompute修改列名
- 自己写了一个小小的双色球号码随机生成器
- 简单点击图片弹出video视频弹窗功能
- [译]eBay Elasticsearch性能调优实践
- Android编程权威指南[pdf]