Java多线程中Future设计模式怎么用
发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,这篇文章将为大家详细讲解有关Java多线程中Future设计模式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Future -> 代表的是未来的一个凭据pub
千家信息网最后更新 2025年01月27日Java多线程中Future设计模式怎么用AsynFuture -> Future具体实现类
FutureService -> 桥接Future和FutureTask
FutureTask -> 将你的调用逻辑进行了隔离
这篇文章将为大家详细讲解有关Java多线程中Future设计模式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Future -> 代表的是未来的一个凭据
public interface Future{ T get() throws InterruptedException;}
AsynFuture -> Future具体实现类
public class AsynFutureimplements Future { private volatile boolean done = false; private T result; public void done(T result){ synchronized (this){ this.result = result; this.done = true; this.notifyAll(); } } /** * 轮询 没有完成等待 */ @Override public T get() throws InterruptedException { synchronized (this) { while (!done) { this.wait(); } } return result; }}
FutureService -> 桥接Future和FutureTask
public class FutureService { /** * 需进程等待 */ publicFuture submit(final FutureTask task) { AsynFuture asynFuture = new AsynFuture<>(); new Thread(() -> { T result = task.call(); asynFuture.done(result); }).start(); return asynFuture; } /** * 运行完 自动回调 * 无需进程等待 */ public Future submit(final FutureTask task, final Consumer consumer) { AsynFuture asynFuture = new AsynFuture<>(); new Thread(() -> { T result = task.call(); asynFuture.done(result); consumer.accept(result); }).start(); return asynFuture; }}
FutureTask -> 将你的调用逻辑进行了隔离
public interface FutureTask{ T call();}
需要时回调:
/** * Future -> 代表的是未来的一个凭据 * FutureTask -> 将你的调用逻辑进行了隔离 * FutureService -> 桥接Future和FutureTask */public class SyncInvoker { public static void main(String[] args) throws InterruptedException { FutureService futureService = new FutureService(); Futurefuture = futureService.submit(() -> { try { Thread.sleep(10001); } catch (InterruptedException e) { e.printStackTrace(); } return "FINISH"; }); System.out.println("=============="); System.out.println("do other thing."); Thread.sleep(1000); System.out.println("=============="); /** * 调用也形成了阻塞 */ System.out.println(future.get()); }}
运行:
==============
do other thing.
==============
FINISH
运行完自动回调:
//** * Future -> 代表的是未来的一个凭据 * FutureTask -> 将你的调用逻辑进行了隔离 * FutureService -> 桥接Future和FutureTask */public class SyncInvoker { public static void main(String[] args) throws InterruptedException { FutureService futureService = new FutureService(); futureService.submit(() -> { try { Thread.sleep(10001); } catch (InterruptedException e) { e.printStackTrace(); } return "FINISH"; },System.out::println); System.out.println("=============="); System.out.println("do other thing."); Thread.sleep(1000); System.out.println("=============="); }}
关于"Java多线程中Future设计模式怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
代表
凭据
篇文章
逻辑
运行
隔离
模式
线程
设计模式
设计
更多
进程
不错
实用
内容
文章
知识
参考
帮助
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
济宁戴尔服务器代理批发
湖北大数据数显钟服务器
vb.net添加数据库
全国wifi数据库
重庆智野网络技术集团
数据库不支持数组
采血建数据库能知道以前的案底嘛
打印服务器不能
本地版本高于服务器
数据库规范标准
普陀区标准软件开发怎么样
浙江安卓软件开发大概多少钱
cmd 连接服务器
数据库 数据字段
兴唐网络安全研究员
护苗青少年网络安全课第四章
搜索引擎 数据库
加强校园网络安全保障
人工智能和网络安全哪个重要
湖南工蚁互联网科技有限公司
阿里云服务器安全服务
一份好的网络安全解决方法
用idea连接数据库代码怎么写
网络技术是社会重要的技术
互联网金融科技公司干啥的
服务器不建议做端口映射
崇明区互联网视频系统服务器
天津创海互联网科技有限公司
我的世界服务器村民卖指定东西
小学共建网络安全手抄报内容