当前位置: 首页 > news >正文

java所有线程都是通过Callable和Runnable和Thread实现的

FutureFutureTask 的区别和超时功能

1. Future

Future 是一个接口,主要用于:

  • 获取任务的执行结果
  • 检查任务是否完成
  • 取消任务

方法:

  • get():获取任务执行结果。如果任务未完成,该方法会阻塞直到任务完成。
  • get(long timeout, TimeUnit unit):带超时功能的 get() 方法,如果任务在指定的时间内未完成,则抛出 TimeoutException

超时功能:

Future 提供的 get(long timeout, TimeUnit unit) 方法支持超时机制,避免任务长时间阻塞主线程。若任务在指定时间内未完成,会抛出 TimeoutException

2. FutureTask

FutureTaskFuture 的实现类,并且实现了 Runnable 接口。相比于 FutureFutureTask 提供了更多功能:

  • 可以作为 Runnable 提交给 ThreadExecutorService 执行。
  • 提供了任务状态管理、任务取消、异常处理等功能。

增强功能:

  • isDone():检查任务是否已经完成(无论是正常完成还是被取消)。
  • isCancelled():检查任务是否已被取消。
  • cancel(boolean mayInterruptIfRunning):取消任务的执行,如果任务正在执行且支持中断,则尝试中断任务。
  • 任务异常处理:如果任务抛出异常,get() 方法会抛出 ExecutionException,开发者可以捕获并处理。

超时功能:

FutureTask 继承了 Future,因此同样支持 get(long timeout, TimeUnit unit) 方法,支持超时机制。

3. 超时功能总结

  • FutureFutureTask 都支持 get(long timeout, TimeUnit unit) 方法,用于设置超时等待任务的结果。
  • 如果任务在指定的时间内未完成,get() 会抛出 TimeoutException,从而避免阻塞。
  • 超时机制在处理可能执行时间较长或不确定的任务时非常重要,能够确保系统不会因为任务过长而一直阻塞。

CallableRunnable 知识

1. Runnable

Runnable 是一个函数式接口,定义了一个 run() 方法,表示可以被执行的任务。它不能返回结果,也不能抛出检查异常(checked exceptions)。

使用场景:

  • 适用于不需要返回值的任务。
  • 可以通过 ThreadExecutorService 来执行。
Runnable task = () -> {System.out.println("Task is running");
};
Thread thread = new Thread(task);
thread.start();
http://www.dtcms.com/a/422916.html

相关文章:

  • 0.7 秒实现精准图像编辑!VAREdit 让 AI 图像编辑告别“拖沓与失控,代码模型已开源。
  • 计算机软件包含网站开发购物网站开发设计类图
  • 【避坑实战】C# WinForm 上位机开发:解决串口粘包+LiveCharts卡顿+InfluxDB存储(免费代码+仿真工具)
  • 开源 C# 快速开发(十二)进程监控
  • 江协科技 CAN总线入门课程(仲裁)
  • Ubuntu 添加右键“复制全路径”菜单
  • 国企网站建设的意义电影影视网站模板免费下载
  • 网站主页设计模板房地产门户网站
  • 前端核心框架vue之(vuex状态篇4/5)
  • SheetGod:让Excel公式变得简单
  • 地信是“安卓”专业还是“苹果”专业?
  • 视频拼接类产品介绍
  • VSCode上配置Spring Boot环境
  • 线程同步实战指南:从 bug 根源到锁优化的终极之路
  • 中文企业展示网站模板优化wordpress后台速度
  • 做网站不赚钱了wordpress代码编辑
  • 云手机在硬件资源方面的优势
  • 技术深度解析:指纹云手机如何通过设备指纹隔离技术重塑多账号安全管理
  • 中国移动获得手机直连卫星通讯牌照:行业变革的催化剂
  • Chapter9—享元模式
  • 常州网站建设公司案例怎样做企业学校网站
  • 建设网站对企业的重要性企业网站网页设计有哪些
  • SpringBoot结合Vue 播放 m3u8 格式视频
  • 网站推广目标关键词龙岩网站设计找哪家好
  • 【论文阅读】ASPS: Augmented Segment Anything Model for Polyp Segmentation
  • 精读C++20设计模式——结构型设计模式:享元模式
  • FT8430-LRT非隔离5V100MA电源芯片,满足小家电、智能照明、MCU供电需求,替代阻容降压(典型案例,电路图)
  • [论文阅读]Benchmarking Poisoning Attacks against Retrieval-Augmented Generation
  • 精读C++20设计模式:结构型设计模式:装饰器模式
  • (数据结构)链表OJ——刷题练习