Spring 项目中使用线程池执行线程任务(ExecutorService)

前言

最近项目中需要在创建订单后15分钟后关闭订单,于是就想到了另外开一个线程等待十五分钟之后去将订单給关闭了,记录实现过程,现在主要用 springboot 框架,防止时间久了忘记了,到时候也好再捡起来。

关键字:spring、ExecutorService、Executors

一、新建线程池

public static ExecutorService threadPool = Executors.newCachedThreadPool();

二、在业务后面加上线程任务

// 开起定时线程任务
System.out.println("线程创建时间:" + new SimpleDateFormat("yyyy-mm-dd HH:mm:ss").format(new Date()));
  threadPool.execute(new Runnable() {
      public void run() {
          try {
              Thread.sleep(15 * 60 * 1000);
              System.out.println("线程睡眠结束并执行时间:" + new SimpleDateFormat("yyyy-mm-dd HH:mm:ss").format(new Date()));
              int status = tradingOrderMapper.selectStatus(outTradeNo);
              if (status == 0) {  // 未支付状态则关闭订单
                  close(outTradeNo);  // 关闭订单
              }
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
      }
  });

总结

这是利用的 spring 封装的线程池,当然也不只这一种线程池,spring 提供了四种线程池,网上也有很多资料可以查阅,然后根据自己的实际需求选择使用不同的线程池。

你可能感兴趣的:(Spring 项目中使用线程池执行线程任务(ExecutorService))