使用Java 中Timer定时器设置订单提交后24小时未付款订单状态为已关闭。

来源:互联网 发布:精准数据营销 编辑:程序博客网 时间:2024/05/01 14:19

一:简单的Timer定时器方法Demo:

public class CommTimer {    /**     * 设置指定24小时后执行     */    public static void orderClose() {        final Timer timer = new Timer();        timer.schedule(new TimerTask() {            @Override            public void run() {                //这里写修改方法,根据订单号修改状态就可以了                System.out.println("60秒后执行此方法");                // 不要忘记写中断定时器                timer.cancel();            }        //1秒等于1000毫秒  这里是一天        },24*60*60*1000);    }}

二:实现步骤:

①:提交订单方法 结束之前调用定时器里面的修改订单状态方法。

②:意思就是提交订单时 设置24小时未付款会执行此方法,修改状态为已关闭。

③:注意的是:在订单付款的方法结束时也需要调用定时器关闭方法,否则订单状态也会修改为已关闭


我的代码:

package com.ssm.jock.timer;import java.util.Timer;import java.util.TimerTask;import org.apache.log4j.Logger;import com.ssm.jock.service.BuyerOrderListService;import com.ssm.jock.utils.SpringContextUtils;/** * Timer定时器 * @author 谢豪 * @Description TODO * 2017年12月11日 上午9:43:08 * @version V1.0 */public class CommTimer {    private static final Logger out = Logger.getLogger(CommTimer.class);    /**     * 订单关闭(设置指定24小时后,修改订单状态为已关闭)     * @param bolId  订单号     */    public static void orderClose(final String bolId) {        final Timer timer = new Timer();        timer.schedule(new TimerTask() {            @Override            public void run() {                OrderService os= SpringContextUtils.getBean(OrderService.class);                try {                    Integer ret = os.updateState(bolId,0);                    if(ret > 0) {                        out.info("订单号:"+bolId+"已关闭");                    }                } catch (Exception e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }                // 中断线程                timer.cancel();            }        },24*60*60*1000);    }}
阅读全文
0 0
原创粉丝点击