话不多数 直接上代码
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.*;
/**
* 工具类,多线程调用方法处理得到结果集
* @author weigang
* @param <ResultType> 结果集类型(和传参类型保持一致)
* @param <CurrentType> 当前类型,指定调用的是哪个类的哪个方法
* @param <ParamType> 参数类型,使用多线程调用方法的参数
*/
public class MultiThread<ResultType,CurrentType,ParamType> {
private static int cpuNums = 0;
public static int maxThreadNum = 32;
static {
//获取本机cpu个数
cpuNums = Runtime.getRuntime().availableProcessors();
//通过计算公式得到最大线程数
maxThreadNum= (int) ((int)cpuNums*1*1/0.3);
}
/**
* 线程同时启用多个方法(第七版本)
*
* @param <CurrentType>
*/
static class MultiThreadSeven<Curr