java定时器_iphone如何定时发送短信

java定时器_iphone如何定时发送短信定时任务(如:定时发送短信邮箱等)前面整过一个任务调度,它是固定在每天几点等执行,对于要手动加入的时间的定时发送短信不适用。学习quartz首先了解三个概念:调度器:负责调度作业和触发器;触发器:设置作业执行的时间、参数、条件等;(简单触发器和Cron触发器)作业:定时任务内容,被执行的程序;下载必要的jar包,将quartz-x.x.x.jar和core和/或optional文件夹中的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

定时任务(如:定时发送短信邮箱等)

前面整过一个任务调度,它是固定在每天几点等执行,对于要手动加入的时间的定时发送短信不适用。

学习quartz首先了解三个概念:

调度器:负责调度作业和触发器;

触发器:设置作业执行的时间、参数、条件等;(简单触发器和Cron触发器)

作业:定时任务内容,被执行的程序;

下载必要的jar包,将quartz-x.x.x.jar 和core 和/或 optional 文件夹中的 jar 文件放在项目的文件夹或项目的类路径中 Quartz的几个核心的接口和类为:

Job接口:自己写的“定时程序”实现此接口的void execute(JobExecutionContext

arg0)方法,Job还有一类为有状态的StatefulJob接口,假如我们需要在上一个作业执行完后,根据其执行结果再进行下次作业的执行,则需要

实现此接口。

Trigger抽象类:调度类(Scheduler)在时间到时调用此类,再由trigger类调用指定的定时程序。

Quertz中提供了两类触发器为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几点结束,隔

多长时间执行,共执行多少次等,后者提供了使用表达式来描述定时功能,因此适用于比较复杂的定时描述,例如每个月的最后一个周五,每周的周四等。

JobDetail类:具体某个定时程序的具体描述,包括Name,Group,JobDataMap等。

JobExecutionContext类:定时程序执行的run-time的上下文环境,用于得到当前执行的Job的名字,配置的参数等。

JobDataMap类:用于描述一个作业的参数,参数可以为任何基本类型例如String,float等,也可为某个对象的引用.

JobListener,TriggerListener接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操纵。

JobStore类:在哪里执行定进程序,可选的有在内存中,在数据库中。

开始:边看例题边学习,首先从简单触发器开始…… 1、作业通过实现org.quartz.job接口,可以使 Java

类变成可执行的。这个类用一条非常简单的输出语句覆盖了execute(JobExecutionContext context)方法。 import

java.util.Date;

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

public class SimpleQuartzJob implements Job {

public SimpleQuartzJob() {

}

public void execute(JobExecutionContext context) throws JobExecutionException {

System.out.println(“In SimpleQuartzJob – executing its JOB at “

+ new Date() + ” by ” + context.getTrigger().getName());

}

} 2、触发器和调度器

public void task() throws SchedulerException

{

//通过SchedulerFactory来获取一个调度器

SchedulerFactory schedulerFactory = new StdSchedulerFactory();

Scheduler scheduler = schedulerFactory.getScheduler();

//引进作业程序

JobDetail jobDetail =

new JobDetail(“jobDetail-s1”, “jobDetailGroup-s1”, SimpleQuartzJob.class);

//new一个触发器

SimpleTrigger ***Trigger =

new SimpleTrigger(“***Trigger”, “triggerGroup-s1”);

//设置作业启动时间

long ctime = System.currentTimeMillis();

***Trigger.setStartTime(new Date(ctime));

//设置作业执行间隔

***Trigger.setRepeatInterval();

//设置作业执行次数

***Trigger.setRepeatCount(10);

//设置作业执行优先级默以为5

//***Trigger.setPriority(10);

//作业和触发器设置到调度器中

scheduler.scheduleJob(jobDetail, ***Trigger);

//启动调度器

scheduler.start();

}

一个简单的quartz任务就完成了。

以下是我根据上边的介绍写的定时发送消息的代码:

PushJob.java

package cn.net.inch.mb.task;

import java.text.SimpleDateFormat;

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import cn.net.inch.mb.domain.Message;

import cn.net.inch.mb.service.IMessageService;

public class PushJob implements Job {

// private static IMessageService messageService = null;

@Override

public void execute(JobExecutionContext context)

throws JobExecutionException {

System.out

.println(“———————–定时发送———————————————-“);

Object object = context.getJobDetail().getJobDataMap().get(“message”);

Object msgService = context.getJobDetail().getJobDataMap().get(

“msgService”);

Message msgMessage = (Message) object;

IMessageService messageService = (IMessageService) msgService;

String title = msgMessage.getTitle();

System.out.println(“定时消息启动,消息标题为:” + title + “消息ID”

+ msgMessage.getId());

String content = msgMessage.getContent();

SimpleDateFormat tempDate = new SimpleDateFormat(“yyyy-MM-dd” + ” “

+ “HH:mm:ss”);

String pushTime = tempDate.format(new java.util.Date());

System.out.println(” ad msgMessage:” + (msgMessage == null));

try {

System.out.println(“进入推送”);

messageService.pushMsg(title, content, pushTime);

msgMessage.setStatus(“1”);

messageService.saveOrUpdateMessage(msgMessage);

} catch (Exception e) {

msgMessage.setStatus(“3”);

messageService.saveOrUpdateMessage(msgMessage);

e.printStackTrace();

}

System.out

.println(“———————–定时发送结束———————————————-“);

}

}

2.SimpleScheduler.java

package cn.net.inch.common.push;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.quartz.SimpleTrigger;

import org.quartz.impl.StdSchedulerFactory;

import cn.net.inch.mb.service.IMessageService;

import cn.net.inch.mb.task.PushJob;

public class SimpleScheduler {

private Scheduler scheduler = null;

private SimpleScheduler() throws SchedulerException {

scheduler = createScheduler();

}

private static SimpleScheduler instance;

public static synchronized SimpleScheduler getSimpleScheduler()

throws SchedulerException {

if (instance == null) {

instance = new SimpleScheduler();

}

return instance;

}

static Log logger = LogFactory.getLog(SimpleScheduler.class);

public static void main(String[] args) throws SchedulerException,

ParseException {

SimpleScheduler simple = new SimpleScheduler();

try {

// Create a Scheduler and schedule the Job

Scheduler scheduler = simple.createScheduler();

String ddd = “2012-01-13 15:56:30”;

Date d = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”).parse(ddd);

// simple.scheduleJob(d, PushJob.class);

scheduler.start();

logger.info(“Scheduler started at ” + new Date());

} catch (SchedulerException ex) {

logger.error(ex);

}

}

public Scheduler createScheduler() throws SchedulerException {// 创建调度器

return StdSchedulerFactory.getDefaultScheduler();

}

public void scheduleJob(Date date, Object object, Long id,

IMessageService messageService) throws SchedulerException,

ParseException {

String dateStr = new SimpleDateFormat().format(date);

dateStr = id + dateStr;

System.out.println(“调度类名称为:” + dateStr);

JobDetail jobDetail = new JobDetail(dateStr, Scheduler.DEFAULT_GROUP,

PushJob.class);

// jobDetail.getJobDataMap().put(“SCAN_DIR”, “D:\\Tomcat\\conf”);

jobDetail.getJobDataMap().put(“message”, object);

jobDetail.getJobDataMap().put(“msgService”, messageService);

SimpleTrigger trigger = new SimpleTrigger(dateStr, “triggerGroup-s1”);

// TriggerUtils.makeSecondlyTrigger(3);// 每10秒触发一次

// trigger.setName(“scanTrigger”);

/*

* String ddd = “2012-01-05 19:22:00”; Date d = new

* SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”).parse(ddd);

* trigger.setStartTime(d);// 设置第一次触发时间

*/

/*

* String ddd = “2012-01-06 19:00:00”; Date d = new

* SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”).parse(ddd);

*/

trigger.setStartTime(date);

scheduler.scheduleJob(jobDetail, trigger);

System.out.println(“创建scheduler”);

// removeJob(“ScanDirectory”, Scheduler.DEFAULT_GROUP);

}

/*

* public boolean removeJob(String jobName, String group) throws

* SchedulerException { scheduler.pauseJob(jobName, group); return

* scheduler.deleteJob(jobName, group); }

*/

}

Action触发:

jobName = new SimpleDateFormat().format(messageList.get(i)

.getSendTime());

jobName = messageList.get(i).getId() + jobName;

Scheduler sched = gSchedulerFactory.getScheduler();

sched.deleteJob(jobName, Scheduler.DEFAULT_GROUP);

Scheduler scheduler = simple.createScheduler();

simple.scheduleJob(messageList.get(i).getSendTime(),

messageList.get(i), messageList.get(i).getId(),

messageService);

scheduler.start();

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182287.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 更新日志.txt

    【20210811.1905.3】增加了几处新功能:1.单码登录功能2.账号与用户电脑机械码绑定<url>https://zhuanlan.zhihu.com/p/350520546</url>【20210811.1905.2】优化了几个子程序算法,提高运行速度【20210811.1905.1】1.更新了xxx内容2.修复了几处小bug….

  • LuaJIT简介[通俗易懂]

    LuaJIT简介[通俗易懂]LuaJIT是刚刚在即时编译器(JIT)为» 的Lua编程语言。Lua是一个功能强大,动态和轻量级的编程语言。它可能被嵌入或用作通用的,独立的语言兼容性WindowsLinux的BSDOSXPOSIXEmbeddedAndroid的iOS版PS3PS4PSVitaXbox360GCCCLANG LLVMMSVC8664位

  • notepad++正则表达式替换字符串

    notepad++正则表达式替换字符串则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率。EditPlus的查找,替换,文件中查找支持以下的正则表达式:表达式说明/t制表符./n新行..匹配任意字符.|匹配表达式左边和右边的字符.例如,”ab|bc”匹配”ab”或者”bc”….

  • python输入两个集合取并集_python交集并集差集

    python输入两个集合取并集_python交集并集差集第一种方法:使用python基本数据结构set集合。优点:集合运算长度可以不一致,运算效率高缺点:两个进行运算的集合中不能够含有重复的元素,如果含有的话,转成set集合后,会自动去掉重复元素a=[1,2,3]b=[1,2,6,9,12]print(set(a)&set(b))#交集print(set(a)|set(b))#并集print(set(a)^set(b))#异或,就是两个集合去掉交集的那部分print(set(a)-set(b))#差集,就

  • 二进制与十进制,八进制,十六进制转换_十进制转十六进制算法

    二进制与十进制,八进制,十六进制转换_十进制转十六进制算法进制转换:二进制、八进制、十六进制、十进制之间的转换不同进制之间的转换在编程中经常会用到,尤其是C语言。将二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。假设当前数字是N进制,那么:对于整数部分,从右往左看,第i位的位权等于Ni-1对于小数部分,恰好相反,要从左往右看,第j位的位权为N-j。…

    2022年10月18日
  • 事务ACID理解

    事务ACID理解事务管理(ACID)谈到事务一般都是以下四点原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency)事务前后数据的完整性必须保持一致。隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔…

    2022年10月12日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号