调用线程池类方式:
executorSupport.addTask(ExecutorSupport.BIZ_OPERATE_RECODE, new UserOperateRecordTask(userOperateRecordEntity, userOperateRecordMapper));
@Service public class ExecutorSupport { private static final Logger LOGGER = LoggerFactory.getLogger(); //交易订单流水记录 public static final String BIZ_TRADE_ORDER_LOG = "biz_user_order_log"; //用户操作记录 public static final String BIZ_OPERATE_RECODE = "biz_operate_recode"; //线程池容器 private static Map<String, ExecutorService> EXECUTOR_MAP = new HashMap<String, ExecutorService>(); public void addTask(String biz, Runnable task) { try { if (StringUtil.isBlank(biz)) { LOGGER.error(LogBuilderUtil.getBuilder("addTask", "将任务提交到线程池中", "非法biz") .appendParam("biz", biz) .appendParam("task", task) .build()); return; } if (!EXECUTOR_MAP.containsKey(biz)) { synchronized (this) { if (!EXECUTOR_MAP.containsKey(biz)) { EXECUTOR_MAP.put(biz, Executors.newCachedThreadPool()); } } } if (EXECUTOR_MAP.get(biz) == null || EXECUTOR_MAP.get(biz).isShutdown()) { LOGGER.error(LogBuilderUtil.getBuilder("addTask", "将任务提交到线程池中", "线程池状态异常") .appendParam("biz", biz) .appendParam("task", task) .appendParam("EXECUTOR_MAP", JSON.toJSONString(EXECUTOR_MAP.keySet())) .build()); return; } EXECUTOR_MAP.get(biz).submit(task); LOGGER.info(LogBuilderUtil.getBuilder("addTask", "将任务提交到线程池中", "放入线程池成功") .appendParam("biz", biz) .appendParam("task", task) .build()); } catch (Exception e) { LOGGER.error(LogBuilderUtil.getBuilder("addTask", "将任务提交到线程池中", "Exception") .appendParam("biz", biz) .appendParam("task", task) .build(), e); } } }
public class UserOperateRecordTask implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(); private UserOperateRecordEntity userOperateRecordEntity; private UserOperateRecordMapper userOperatRecordMapper; public UserOperateRecordTask(UserOperateRecordEntity userOperateRecordEntity, UserOperateRecordMapper userOperatRecordMapper) { this.userOperateRecordEntity = userOperateRecordEntity; this.userOperatRecordMapper = userOperatRecordMapper; } @Override public void run() { try { this.validParam(); userOperatRecordMapper.insert(userOperateRecordEntity); LOGGER.info(LogBuilderUtil.getBuilder("UserOperateRecordTask", "记录用户行为日志", "成功") .appendParam("info", userOperateRecordEntity.getCustId() + "|" + userOperateRecordEntity.getBizCode()) .build()); } catch (Exception e) { LOGGER.error(LogBuilderUtil.getBuilder("UserOperateRecordTask", "记录用户行为日志", "Exception") .appendParam("userOperateRecordEntity", userOperateRecordEntity) .build(), e); } } private void validParam() { String remark = userOperateRecordEntity.getMark(); if (remark != null && remark.length() > 128) { userOperateRecordEntity.setMark(remark.substring(0, 128)); } } }