您的位置 首页 测评

定时器怎样运用

定时器怎么使用-对于开发游戏项目的同胞来说,Timer 这个东西肯定不会陌生,今天对以前自己经常使用的定时进行了一番小小的总结!没有写具体实现的原理,只是列举出了其中的四种比较常见的使用方法,相对而言,所以只要按照其所列举的例子仿照即可!

java中守时器的简略运用

1.首要必定是容器一发动就要发动守时器,所以咱们能够挑选把守时器写在一个监听器里,容器一发动所以监听器也就跟着发动,然后守时器就能够工作了。

榜首步,把自己写的监听器加到web.xml中;

第二步,写一个监听器,完结ServletContextListener接口

第三步,写一个守时器,承继TImerTask,在复写的run()办法里写详细的事务逻辑。

第四步,在自己的监听器里复写的

public void contexTIniTIalized(ServletContextEvent arg0){

}

这个办法里调用守时器的schedule办法。

详细代码如下:

web.xml添加:

1 《!– 用于补偿认证信息反常的数据,用来发动守时器,20170505 –》

2 《listener》

3 《listener-class》com.dcits.app.servlet.MyTImerTaskListener《/listener-class》

4 《/listener》

MyTimerTaskListener.java

package com.dcits.app.servlet;

import java.util.Calendar;

import java.util.Timer;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

/**

* @author Weiyongle

* @time 2017-5-5 下午2:05:32

*/

public class MyTimerTaskListener implements ServletContextListener {

private Timer timer = null;

@Override

public void contextDestroyed(ServletContextEvent arg0) {

timer.cancel();

}

@Override

public void contextInitialized(ServletContextEvent arg0) {

System.out.println(“—–开端发动守时器——”);

Calendar twentyOne = Calendar.getInstance();

twentyOne.set(Calendar.HOUR_OF_DAY, 23);

twentyOne.set(Calendar.MINUTE, 0);

twentyOne.set(Calendar.SECOND, 0);

timer = new Timer(true);

//榜首次是晚上23点履行,距离24小时履行一次

timer.schedule(new MyTimerTask(), twentyOne.getTime(), 1000*60*60*24);

/*System.out.println(“—–开端发动守时器——”);

Calendar twentyOne = Calendar.getInstance();

twentyOne.set(Calendar.HOUR_OF_DAY, 14);

twentyOne.set(Calendar.MINUTE, 47);

twentyOne.set(Calendar.SECOND, 0);

timer = new Timer(true);

timer.schedule(new MyTimerTask(), twentyOne.getTime(), 1000*10);*/

}

}

MyTimerTask.java

package com.dcits.app.servlet;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import java.util.TimerTask;

import org.codehaus.jackson.JsonGenerationException;

import org.codehaus.jackson.map.JsonMappingException;

/**

* 守时器,用于补偿认证的时分没有获取到正常回来的那些数据

* @author Weiyongle

* @time 2017-5-5 下午2:20:12

*/

public class MyTimerTask extends TimerTask{

private static StringBuffer url = new StringBuffer();

@Override

public void run() {

//出产环境

// url.append(“https://我是详细的ip地址/nmsypt/servlet/webServlet”);//出产环境

url.append(“http://localhost:8080/adp/servlet/webServlet”);//本地环境

Map《String,Object》 reqMap = new HashMap《String,Object》();

//这儿的map从数据库里获取对应的数据不写死就行了,先获取map,在写个for循环进行循环就行了

reqMap.put(“QYMC”,“丹同学的公司”);

reqMap.put(“NSRSBH”,“158028307441234”);

reqMap.put(“SJHM_FR”,“15802830744”);

reqMap.put(“YZM”,“123456”);

reqMap.put(“CWFZR”,“”);//

reqMap.put(“ZJLX_DM_CW”,“”);//

reqMap.put(“ZJHM_CW”,“”);//

reqMap.put(“ZGRS”,“1234”);

reqMap.put(“SQYY”,“”);//

reqMap.put(“JRCPBM”,“00002”);

reqMap.put(“XYDM”,“1”);

reqMap.put(“XZQHDM”,“”);

reqMap.put(“QYBM”,“QY17900000647001”);

try {

CompensateData.CompensateDatas(url.toString(), reqMap);

System.out.println(“—–成功补偿了一条认证信息——”);

} catch (JsonGenerationException e) {

e.printStackTrace();

} catch (JsonMappingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

java傍边的守时器的4种运用办法

关于开发游戏项目的同胞来说,Timer 这个东西必定不会生疏,今日对曾经自己常常运用的守时进行了一番小小的总结!没有写详细完结的原理,仅仅罗列出了其间的四种比较常见的运用办法,相对而言,所以只需依照其所罗列的比如模仿即可!

import java.util.Calendar;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

public class TimeTest {

public static void main(String[] args) {

timer1();

//timer2();

//timer3();

//timer4();

}

// 榜首种办法:设定指定使命task在指守时刻time履行 schedule(TimerTask task, Date time)

public static void timer1() {

Timer timer = new Timer();

timer.schedule(new TimerTask() {

public void run() {

System.out.println(“——-设定要指定使命——–”);

}

}, 2000);// 设定指定的时刻time,此处为2000毫秒

}

// 第二种办法:设定指定使命task在指定推迟delay后进行固定推迟peroid的履行

// schedule(TimerTask task, long delay, long period)

public static void timer2() {

Timer timer = new Timer();

timer.schedule(new TimerTask() {

public void run() {

System.out.println(“——-设定要指定使命——–”);

}

}, 1000, 5000);

}

// 第三种办法:设定指定使命task在指定推迟delay后进行固定频率peroid的履行。

// scheduleAtFixedRate(TimerTask task, long delay, long period)

public static void timer3() {

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

public void run() {

System.out.println(“——-设定要指定使命——–”);

}

}, 1000, 2000);

}

// 第四种办法:组织指定的使命task在指定的时刻firstTime开端进行重复的固定速率period履行.

// Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)

public static void timer4() {

Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.HOUR_OF_DAY, 12); // 操控时

calendar.set(Calendar.MINUTE, 0); // 操控分

calendar.set(Calendar.SECOND, 0); // 操控秒

Date time = calendar.getTime(); // 得出履行使命的时刻,此处为今日的12:00:00

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

public void run() {

System.out.println(“——-设定要指定使命——–”);

}

}, time, 1000 * 60 * 60 * 24);// 这儿设定将延时每天固定履行

}

}

Spring守时器应该怎样用呢?

在Java中呢,咱们总是会有一些守时使命,比如说:发邮件、短信推送音讯;发公告、更新等等。那么Spring中的守时器应该怎样运用呢?接下来咱们就来说说Spring守时器的运用办法。

1.咱们今日呢,是以springboot项目为根底进行的,咱们假如不会运用Springboot的话能够先保藏一下,明日我会出一个Springboot项目的建立文章。到时分你能够回来来再看这篇。由于springboot实在是在方便了,用完之后就不想再回去写配置文件了。。。

2.首要呢,咱们需要在发动主程序中敞开守时,只需要在主类上添加@EnableScheduling即可,信任咱们看字面意思也理解是什么意思啦!

3.接下来便是写咱们的守时类,那么你就能够在守时类中完结自己的需求,无论是发送邮件、短信;仍是公告、更新,他通通能够准确无误的帮你履行,假如你有爱好,也能够写一个抢购物品呀、车票呀什么的脚本。当然说起来,写脚本或许python更强一些。

4.在以上代码中呢,我运用 @Autowired注入了testService,为的是告知咱们,运用@Component的类同Controller、Service相同,能够运用主动注入。

5.守时办法上方@Scheduled(cron = “0 0/1 * * * ?”)代表每分钟履行一次办法。testService中的办法仅仅是return了一个“you can you up!!!”字符串。我就不把代码贴出来。

6.咱们或许很利诱@Scheduled里边的时刻到底是怎样算的,说实话~我也没学会。可是你能够去查找一下!!!我在这儿贴出几个简略的比如,咱们假如领悟好的,能够测验自己悟一会儿!!!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/344997.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部