纯Java——简易高并发框架

0.源代码

github-简易高并发框架

注:本篇博客知识来自于网课。

1.问题来源以及w

对于一个题库系统。考试组要有批量的离线文档要生成。题库组批量的题目要进行排重,且要根据条件批量修改题目内容。对于

痛点:

  • 批量任务完成缓慢
  • 所有的问题都围绕着“查询”,即查询进度影响总体性能
  • 我们希望尽量使用友好(如果用多线程来提高性能,我们希望能屏蔽细节)

因此我们需要一个可以提供查询进度通用的框架。

2.我们该怎么做?

这里先要明确“任务”(Task)和“工作”(Job)的关系。对于一个工作,他内部可能须有许多的任务,任务是他的子元素(属性、字段)。

  • 用并发安全的类确保每个工作的属性和工作下的每个任务信息,也意味着工作和任务的注册机制
  • 需要并发安全的类保存每个任务的处理结果(TaskResult)。
  • 需要提供查询接口,供外部的使用。

这里我们不处理对于工作的检查。有兴趣的可以实现。

3.总体流程

 

这里不按照流程讲解,而是按照类关系从下而上讲解。

4.目录结构

 

5.TaskResultType

package me.hcFramework.pool.vo;

//这个类只是用来作为标志的信息。
public enum TaskResultType {
	SUCCESS,    //表示任务成功
	FAILSURE,   //表示任务失败
	EXCEPTION;  //表示发生了异常,这里我们不去详尽判断,只用这个标示来笼统表示	
}

6.TaskResult

package me.hcFramework.pool.vo;

/**
 *
 * @param <R> 业务方法处理后的业务结果数据的类型
 * 
 * 对属性使用final修饰是为了使其不可改
 */
public class TaskResult<R> {
	//用户业务是否成功完成
	private final TaskResultType resultType;
	//业务方法处理后的业务结果数据
	private final R returnType;
	//如果失败,则失败原因
	private final String reason;
	
    //针对任务失败的构造方法
	public TaskResult(TaskResultType resultType , R returnType , String reason) {
		this.resultType = resultType;
		this.returnType = returnType;
		this.reason = reason;
	}
	
    //针对任务成功的构造方法
	public TaskResult(TaskResultType resultType , R returnType) {
		this.resultType = resultType;
		this.returnType = returnType;
		this.reason =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值