简单使用一下java的线程池:newFixedThreadPool,即固定大小的线程池
贴一个模板:
//创建固定大小线程池
log.info("【请求表线程池】创建线程池,上限10");
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
try{
for (final String id : ids) {
log.info("【请求表线程池】创建线程执行删除操作,请求表id:"+id);
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
systemLogDao.delete(id);
}
});
}
//关闭线程池
fixedThreadPool.shutdown();
while (!fixedThreadPool.awaitTermination(30, TimeUnit.SECONDS)) {
log.info("【请求表线程池】执行请求中,子线程正在运行中,线程池未关闭。");
}
}catch (InterruptedException e) {
e.printStackTrace();
log.error("【请求表线程池】执行请求线程池出现异常,取消所有遗留的任务",e);
fixedThreadPool.shutdownNow();
}catch (Exception e) {
e.printStackTrace();
log.error("【请求表线程池】执行请求线程池出现异常,取消所有遗留的任务",e);
fixedThreadPool.shutdownNow();
}
代码的功能是:删除日志表操作
1.创建大小为10的定长线程池
2.每次循环,从线程池中取一个线程进行删除操作(超过10后,会将删除任务放入一个可无限增长的阻塞队列中,当有空闲线程时,会从队列中取出最先的任务进行操作)
一篇学习的文章:https://www.cnblogs.com/superfj/p/7544971.html