Createsequence
Createsequence
I will try to complete it
I have a brand new idea, this plugin may be directly used to allow users to quickly and actively destroy worker threads, not limited to destroying worker threads that exceed...
我想试试看,不过我得先确认一下我对这个需求的理解有没有问题。 从简单的描述来看的话,作者大大是不是想要扩展类似这样的功能: 即针对每个被管理的线程池,需要能够感知并且管理每个被投递的任务的生命周期,包括且不限于: - 任务被处理的时间节点,可能包括: 1. 被投递到线程池的时间节点; 2. 被执行的时间节点; 3. 执行完毕的时间节点; - 感知线程池中任务的状态,可能包括: 1. 等待中:已被投递,处于等待队列; 2. 执行中:被线程池消费,但是没有执行完毕; 3. 执行完毕:执行完毕; 4. 执行失败:执行过程中发生异常; 然后根据这些信息,就可以得到一些比如任务执行时间,失败任务数之类的综合性指标,不知道我理解的有没有问题。
> 没有这么复杂,就是想通过线程池运行过的任务,得出三个指标:最小执行、最大执行和平均执行时间。 > > 比如: > > 执行两个任务,一个执行时间 1s,另一个 2s。那么,对应的指标应该是: > > * 最小执行:1s > * 最大执行:2s > * 平均执行:1.5s > > 这一块我还没有想好要如何实现。如果实现比较耗费资源,那么这个需求就是不合理的。 这一块实现的话我大概有一点思路,完整版的功能或许可以通过三个组件完成: - 监控器:每个线程池实例绑定一个监视器,用于将普通任务封装为监控任务,并在内部维护这个线程池管理的所有监控任务的信息; - 任务包装器:将普通的 `Runable` 任务包装为...
小马哥,我在读源码的时候,发现 `DynamicThreadPoolExecutor` 通过 `ThreadPoolExecutor` 提供的 `execute`、`beforeExecute` 和 `afterExecute` 方法已经提供好了回调的钩子了,而也已经有关于开始时间和结束时间的处理逻辑了,如果要加上这个这三个时间指标的需求,直接在 `DynamicThreadPoolExecutor` 类里加上刷新时间的逻辑就可以。 不过,个人觉得直接往上加代码或许不是一个优雅的解决方案,我注意到目前 `DynamicThreadPoolExecutor` 中已经写入了多种固定的回调逻辑: - 由 `AbstractDynamicExecutorSupport` 父类提供的线程池中断时等待执行剩余任务的逻辑; - 由 `RejectedProxyInvocationHandler` 提供的当触发拒绝策略时,通过 `ThreadPoolNotifyAlarmHandler` 发送告警的逻辑; - 由 `RejectedProxyInvocationHandler` 提供的记录拒绝任务数的逻辑; - 由...
ok,待会我发个 Issues 吧,不过我可能需要比较多的时间来完成 :)
> 会支持的,但不是现在,还请耐心等待。。。。 好的,感谢回复,这并不是一个迫切的需求,作者按自己的计划进行即可。
有考虑,后续会实现的。 插件作为新引入的机制,目前还很不完善,到目前为止只搞定了接入和插件的自动注册两个功能,目前已经确定需要搞定的还有这些问题: - 线程池已注册插件的运行信息的展示问题; - 线程池动态注册/注销或者动态启用/禁用插件问题; - 插件的执行顺序问题; - 插件本身配置的动态变更问题; 后续会大概按顺序慢慢推进,搞定这些功能。
> /** * Thread-pool param replace. * * @param executor dynamic thread-pool executor * @param threadPoolParameterInfo thread-pool parameter info */ private void threadPoolParamReplace(ThreadPoolExecutor executor, ThreadPoolParameterInfo threadPoolParameterInfo) { > > #如下直接生成新的queue替换原有的引用,如果原始的queue里已经有堆积的任务,直接替换是不是会丢任务?...