1.创建线程池
private ExecutorService executor;
private LinkedBlockingQueue<Runnable> linkedBlockingQueue = new LinkedBlockingQueue<>();
/**
*启动项目的同时创建线程池
*/
@PostConstruct
private void initThreadPool() {
executor = new ThreadPoolExecutor(5, 10, 1000, TimeUnit.SECONDS, linkedBlockingQueue);
}
/**
* 利用线程池中资源,启动线程
*/
public void execute(Runnable runnable) {
log.info("线程池任务数:{}", linkedBlockingQueue.size());
executor.execute(runnable);
}
2.构建继承自Runnable的任务task
@Slf4j
public class task implements Runnable {
private Dto dto;
private DtoAmount amDTO;
private ImgReqDTO iDTO;
private Handler handler;
public AppPushThreadTask(Dto dto, DtoAmount amDTO,
ImgReqDTO iDTO, Handler handler) {
this.dto = reqDTO;
this.amDTO= amountReqDTO;
this.iDTO= iDTO;
this.handler = handler;
}
@Override
public void run() {
if (dto != null) {
//根据dto做具体处理
//根据类型获取相应的handler的处理方法做相应的处理
invoker1(dto);
return;
}
if (amountDTO != null) {
//根据dto做具体处理
//根据类型获取相应的handler的处理方法做相应的处理
invoker2(amountDTO);
return;
}
if (imgDTO != null) {
//根据dto做具体处理
//根据类型获取相应的handler的处理方法做相应的处理
invoker3(imgDTO);
return;
}
}