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

java AsyncTool

引入依赖,或者直接引入代码,依赖有时候拉不下来
引入后查看代码,注释中都有


import com.jd.platform.async.executor.Async;
import com.jd.platform.async.executor.timer.SystemClock;
import com.jd.platform.async.wrapper.WorkerWrapper;import java.util.concurrent.ExecutionException;public class Test {public static void main(String[] args) throws ExecutionException, InterruptedException {ParWorker w = new ParWorker();ParWorker1 w1 = new ParWorker1();ParWorker2 w2 = new ParWorker2();//id:任务的唯一标识。//param:任务的输入参数。//worker:任务的具体实现。//callback:任务的回调实现。//depend:任务的依赖关系,定义任务的执行顺序。//next:任务的后续任务,用于定义任务的执行顺序。WorkerWrapper<String, String> workerWrapper2 =  new WorkerWrapper.Builder<String, String>().id("w2").worker(w2).callback(w2).param("2").build();WorkerWrapper<String, String> workerWrapper1 =  new WorkerWrapper.Builder<String, String>().id("w1").worker(w1).callback(w1).param("1").build();WorkerWrapper<String, String> workerWrapper =  new WorkerWrapper.Builder<String, String>().id("w").worker(w).callback(w).param("1110").build();long now = SystemClock.now();System.out.println("begin-" + now);Async.beginWork(1500, workerWrapper, workerWrapper1, workerWrapper2);
//        Async.beginWork(800, workerWrapper, workerWrapper1, workerWrapper2);
//        Async.beginWork(1000, workerWrapper, workerWrapper1, workerWrapper2);System.out.println("end-" + SystemClock.now());System.err.println("cost-" + (SystemClock.now() - now));System.out.println(Async.getThreadCount());System.out.println(workerWrapper.getWorkResult());Async.shutDown();}
}

import com.jd.platform.async.callback.ICallback;
import com.jd.platform.async.callback.IWorker;
import com.jd.platform.async.executor.timer.SystemClock;
import com.jd.platform.async.worker.WorkResult;
import com.jd.platform.async.wrapper.WorkerWrapper;import java.util.Map;public class ParWorker implements IWorker<String, String>, ICallback<String, String> {//任务中耗时操作执行的位置@Overridepublic String action(String object, Map<String, WorkerWrapper> allWrappers) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("参数="+object);return "abc";}//当执行中有异常后的默认返回值@Overridepublic String defaultValue() {return "worker1--default";}//任务开始前执行的方法@Overridepublic void begin() {//System.out.println(Thread.currentThread().getName() + "- start --" + System.currentTimeMillis());}//任务执行后的结果,可以在此处理action中的结果值@Overridepublic void result(boolean success, String param, WorkResult<String> workResult) {if (success) {System.out.println("返回的结果"+ workResult.getResult());System.out.println("callback worker1 success--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());} else {System.err.println("callback worker1 failure--" + SystemClock.now() + "----"  + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());}}}

import java.util.Map;public class ParWorker1 implements IWorker<String, String>, ICallback<String, String> {@Overridepublic String action(String object, Map<String, WorkerWrapper> allWrappers) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}return null;}@Overridepublic String defaultValue() {return "worker1--default";}@Overridepublic void begin() {//System.out.println(Thread.currentThread().getName() + "- start --" + System.currentTimeMillis());}@Overridepublic void result(boolean success, String param, WorkResult<String> workResult) {if (success) {System.out.println("callback worker1 success--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());} else {System.err.println("callback worker1 failure--" + SystemClock.now() + "----"  + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());}}}

import com.jd.platform.async.callback.ICallback;
import com.jd.platform.async.callback.IWorker;
import com.jd.platform.async.executor.timer.SystemClock;
import com.jd.platform.async.worker.WorkResult;
import com.jd.platform.async.wrapper.WorkerWrapper;import java.util.Map;public class ParWorker2 implements IWorker<String, String>, ICallback<String, String> {@Overridepublic String action(String object, Map<String, WorkerWrapper> allWrappers) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}return null;}@Overridepublic String defaultValue() {return "worker1--default";}@Overridepublic void begin() {//System.out.println(Thread.currentThread().getName() + "- start --" + System.currentTimeMillis());}@Overridepublic void result(boolean success, String param, WorkResult<String> workResult) {if (success) {System.out.println("callback worker1 success--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());} else {System.err.println("callback worker1 failure--" + SystemClock.now() + "----"  + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());}}}
http://www.xdnf.cn/news/220339.html

相关文章:

  • ACTF2025 - WEB Excellent-Site
  • 第十章:CrewAI - 面向流程的多 Agent 结构化协作
  • Andorid车机UI适配,AndroidUI图px的单位,如何适配1920x720,PPI100的屏幕设备
  • 【GESP】C++三级练习 luogu-B2117 整理药名
  • Rockchip Android平台打开GKI无法开机问题
  • 应用服务器-IIS
  • 推荐系统中 Label 回收机制之【时间窗口设计】
  • 基于Lucene的多场景检索系统开发指南
  • [按键安卓ios脚本辅助插件开发]数组排序函数例子
  • 明远智睿SSD2351开发板:开启嵌入式开发新篇程
  • C#实现对达索(Dassault)SolidWorks中3D图纸转化为手机可直接查看预览图纸格式
  • 高级项目管理
  • 巧记英语四级单词 Unit6-下【晓艳老师版】
  • C++程序退出时的对象析构陷阱:深度解析与避坑指南
  • mysql 事务中如果有sql语句出错,会导致自动回滚吗?
  • 力扣刷题总表
  • 【Vue】 实现TodoList案例(待办事项)
  • Java高频面试之并发编程-10
  • C++之string
  • 如何在本地部署小智服务器:从源码到全模块运行的详细步骤
  • CA校验主辅小区配置及UE能力
  • 首发记忆行车方案与座舱智能管家,佑驾创新“抢跑”驾舱融合市场
  • 恒流恒压直流充电测试负载设计:构建精准化检测体系
  • 计算机基础:二进制基础14,二进制加法
  • 如何将二叉树展开为链表?两种Java实现方法对比
  • FPGA 38 ,FPGA 网络通信协议栈基础,ARP 协议深度解析与模块划分( ARP与以太网帧,以及ARP模块常用文件 )
  • 细说STM32单片机FreeRTOS互斥量及其编程实例
  • C# 导入EXCEL 报错外部表不是预期的格式错误指南方案
  • C++中的vector和list有什么区别?
  • Launcher3-实现家长管控-儿童模式-老人模式