
需求是存在一个任务,是一个单独的线程,任务执行过程中存在多次暂停(比如调用 wait )
有一个 run 接口启动这个任务,并存在一个 next 接口唤醒这个任务
2 个接口在启动或者唤醒任务后,等待任务再次暂停,并返回任务中的一些数据。
需求场景是实现一个代码的测试功能,一串代码存在一系列的断点,前端页面点击下一步才能往下走,并且页面上可以显示对应的变量信息。类似在线 java 代码调试一样的东西。
1 zzfer Nov 8, 2021 看起来这应该需要写多个后端接口控制 |
2 cairnechen &bsp;Nov 8, 2021 via iPhone 已经伸手到这种程度了吗? |
3 chendy Nov 8, 2021 不清楚具体的业务场景是啥 感觉最好还是直接拆成一个 List<Task> 这样的结构,点一下跑一步 线程不容易控制,还要处理线程销毁超时之类的事情 |
4 smark Nov 8, 2021 这不是在描述一个 debug 功能吗 |
5 thetbw Nov 8, 2021 debug 这种应该一暂停就整个 jvm 暂停了,除非另起个进程,如果是本地线程,查询变量应该不好弄吧,不知道 jni 行不行。 除非需求再明确一点 |
6 liian2019 Nov 8, 2021 是不是可以把这个任务拆分成多个子任务?类似工作流或者是责任链? |
7 coderstory OP @smark 对的 因为每次请求都是不同的线程 所以不知道怎么控制了 |
8 coderstory OP 直接反射读取 变量都存一个 map 里面了 |
9 coderstory OP @liian2019 这个任务是一堆方法串起来的 具体有多少个 是前端设计页面设计出来的内容决定的 整个代码都是动态生成出来的 |
10 coderstory OP @cairnechen 对于你这样的顶级大神 任何问题都是伸手 |
11 coderstory OP @chendy 具体的业务是 前端设计一个流程 一个流程里有多个节点 流程会转化成一个类 每个节点都是单独的方法 需求是增加一个调试功能,每个节点走完都暂停 前端显示当前的数据 页面点击下一步 就走到下一个节点 |
12 ys2016814 Nov 8, 2021 @coderstory 我当时设计过类似的需求,我们的解决方案是,前端在配置流程的时候会有暂停节点,暂停节点的 id 可以设置为-1 或者 0 , 任务的执行器在执行的时候碰到暂停节点会终止任务调用,任务的执行明细即执行记录会存储在对应的库表中,点击下一步或者说继续执行,会调用该任务的执行明细,查看执行到哪一步,继续执行下一个 task 。 |
13 banmuyutian Nov 8, 2021 工作流+状态码+工厂模式应该可以解决 |
14 cairnechen Nov 8, 2021 |
15 wolfie Nov 8, 2021 |
16 duan602728596 Nov 9, 2021 为什么不使用 generator function 呢 |