Java多线程中Future设计模式怎么用
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章将为大家详细讲解有关Java多线程中Future设计模式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Future -> 代表的是未来的一个凭据pub
千家信息网最后更新 2025年11月06日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 { /** * 需进程等待 */ public Future 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(); Future future = 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安全错误
数据库的锁怎样保障安全
软件开发图标下载
返回数据库有效数
esclipse映射数据库
网络安全治理与黑客
经开区计算机软件开发
开封软件开发技术
网络安全与保密区别
如何在服务器发布一个文件
网络安全运营服务价格
中国第一大服务器厂在哪里
湖北省ipfs云服务器云空间
我的世界租赁服务器的指令
山西超频服务器代理价格
学生会的网络技术部
量子网络技术大全
海康服务器管理口默认密码
如何搭建服务器赚钱
关于网络安全点论文
国有四大行核心数据库
企业软件和网络安全
东营协同办公oa软件开发公司
迪博内部控制与风险数据库
北京中农合网络技术有限公司
怎么看软件有没有自带数据库
金蝶关联数据库
4u机架式服务器
海康服务器管理口默认密码
楚雄服务器云存储费用
国家安全局数据库
IA520服务器