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