Java游戏服务器开发之十七--spring定时任务

    定时任务
        这里我们直接使用spring的定时任务注解,Scheduled
        修改的地方主要是2个,
            添加
                ScheduledTask
            修改
                ApplicationContext.xml
        
        先说下配置文件ApplicationContext.xml
            在文件中加入这个标签,就相当于开启了。之前的代码中有,被我注释掉了。
                <!--定时任务-->
                <task:annotation-driven/>
        然后就是直接写一个定时类ScheduledTask
            使用Component注解交给spring管理
            在里面随便写个方法,在方法上加上@Scheduled(fixedRate = 3000)注解,
                fixedRate = 3000 表示3秒执行一次
                这里扩展下,这个括号里面的参数一般有三个fixedDelay/fixedRate/cron,在fixedDelay和fixedRate都是跟着时间(毫秒单位)
                    可以看下这篇https://blog.csdn.net/kypfos/article/details/77882876
                    (T是任务,W是间隔时间,假设是5秒的间隔)
                    fixedRate:  不管内部执行过程,到时间就执行一次 
                        T1.T1WWWT2.T2.T2WW.T3.T3.T3.T3.T3.T4.T4.T4.T4.T4.T4.T4T5T5WWWT6.T6........
                    fixedDelay:  在上一个执行完毕之后,执行下一个任务
                        T1.T1.WWWWW.T2.T2.T2WWWWW.T3.T3.T3.T3.T3.WWWWW.T4.T4.T4.T4.T4.T4.T4.WWWWWT6.T6......
                    cron是一个表达式 可以看下这篇https://www.cnblogs.com/ark-blog/p/9000079.html
                        字段名              含义          允许的值                        允许的特殊字符  
                        seconds            秒                    0-59                            , - * /  
                        minutes        分                    0-59                            , - * /  
                        hours              小时                  0-23                            , - * /  
                        daysOfMonth        日                    1-31                            , - * ? / L W C  
                        months         月                    1-12 or JAN-DEC                 , - * /  
                        daysOfWeek         周几                  1-7 or SUN-SAT                  , - * ? / L C #
        看下具体的代码
            ScheduledTask
            

/*
 * Copyright (C), 2015-2018
 * FileName: ScheduledTask
 * Author:   zhao
 * Date:     2018/7/19 15:05
 * Description: 定时任务
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.lizhaoblog.server.biz.scheduled;

import com.lizhaoblog.base.session.Session;
import com.lizhaoblog.base.session.SessionManager;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 〈一句话功能简述〉<br>
 * 〈定时任务〉
 *
 * @author zhao
 * @date 2018/7/19 15:05
 * @since 1.0.1
 */
@Component
@Scope("singleton")
public class ScheduledTask {

  private static final Logger logger = LoggerFactory.getLogger(ScheduledTask.class);

  private int count = 0;

  @Scheduled(fixedRate = 15000)
  public void test() {
    count++;
    Session[] sessionArray = SessionManager.getInstance().getSessionArray();
    int length = sessionArray.length;
    logger.info("ScheduledTask " + count + " 在线人数:" + length);
  }

}


        上面的代码在码云上 https://gitee.com/lizhaoandroid/JgServer
        可以加qq群一起探讨Java游戏服务器开发的相关知识    676231524

猜你喜欢

转载自blog.csdn.net/cmqwan/article/details/81117639