|
这里两个写法看不出什么,如果是我的话,会将这个 Task 的逻辑,写到具体的 Service
然后 TaskRunner 作为一个中间组件
到这个程度的话:
1. new Thread(() -> XXXService.DoSomething).start(); // 原生线程池,没有特殊处理
2. TaskRunner.Run("doSomething", () -> XXXService.DoSomething); // 中间件封装
为什么中间件封装:
1. 统计,监控,日志
2. 线程数量控制(即便是协程)
3. 以后 TaskRunner 控制复杂调度(优先级,丢弃,限流...)
如果你们是一个成熟的团队,本来就需要这些中间件,在这个基础上,都只是一个简单的方法调用而已 |