stone-1.2.4 发布, 扩展任务池
1: 介绍
BeeTP是stone包下一款小型任务池组件,它支持单次任务,定时任务,聚合任务的处理,整体功能类似JUC包中的线程池。
2: 参考例子
public class HelloTask implements BeeTask {
public Object call() {
return "Hello World";
}
}
public class MyTaskTest {
public static void main(String[] args) throws Exception {
BeeTaskServiceConfig config = new BeeTaskServiceConfig();
config.setWorkerKeepAliveTime(TimeUnit.SECONDS.toMillis(10));
BeeTaskService service = new BeeTaskService(config);
//作为单次任务
BeeTaskHandle handle = service.submit(new HelloTask());
//作为定时任务
service.scheduleAtFixedRate(new HelloTask(), 0, 2, TimeUnit.SECONDS);
//打印单次任务结果
System.out.println("Result:" + handle.get());
}
}
单次任务,定时任务,聚合任务的接口提交方法使用的均是基于BeeTask的实现。
3: 修改内容
1:任务池代码重构,并进行精简处理
2:修复任务句柄中的取消时的并发性bug
3:在重构的基础上增加树状聚合型任务: BeeTreeTask,源码如下
public interface BeeTreeTask<E> { /** * return pre-split sub tasks * * @return sub tasks of current task */ BeeTreeTask<E>[] getSubTasks(); /** * execute call with handle array of sub tasks * * @param subTaskHandles handle array of sub tasks * @return execution value of method call * @throws Exception occurred in execution */ E call(BeeTaskHandle<E>[] subTaskHandles) throws Exception; }
4: 版本下载
<dependency> <groupId>io.github.chris2018998</groupId> <artifactId>stone</artifactId> <version>1.2.4</version> </dependency>
5: 项目地址