在实际的编码过程中,总会遇到单一处理会有性能风险的问题,于是我们求助于批量或者多线程。
一、批量处理
一般情况下批量处理就可以规避大部分性能风险的问题。将fetch(),改为batchFetch(),多数情况都比较简单,尤其是调用其他应用的接口时,将单一接口,换成批量接口即可;而最终主要是修改数据从数据库中的增删改查的方式。
二、多线程
但是有时批量处理不能满足需求,比如需要调用外部的批量接口,但是外部接口不支持,或者可以添加批量接口,但是发现批量取数据库的效率仍然不满足性能需求,那么只能求助于多线程了,其中每个线程都是批量处理,这样更加提升了效率。
/**
* 并行处理控制参数
*/
public class ParallelParameter {
/**
* 是否需要并行处理
*/
private boolean isNeedParallel = false;
/**
* 单个线程是否需要批量处理
*/
private boolean isNeedBatchProcessPerThread = false;
/***
* 单条线程处理的个数,默认为4
*/
private int countPreThread = 4;
public ParallelParameter() {}
public ParallelParameter(boolean isNeedParallel, int countPreThread) {
this.isNeedParallel = isNeedParallel;
this.countPreThread = countPreThread;
}
public ParallelParameter(boolean isNeedParallel,boolean isNeedBatchProcessPerThread, int countPreThread) {
this.isNeedParallel = isNeedParallel;
this.countPreThread = countPreThread;
this.isNeedBatchProcessPerThread = isNeedBatchProcessPerThread;
}
}
/**