package com.kuke.update.timmer;
import java.util.Calendar;
import java.util.Date;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* 定时任务
* 用于定时提交索引、定时刷新搜索词缓存
*/
public class ScheduledExceutor extends TimerTask {
private String jobName = "";
private static ScheduledExecutorService service = Executors.newScheduledThreadPool(2);
public ScheduledExceutor(String jobName) {
super();
this.jobName = jobName;
}
@Override
public void run() {
}
/**
* 计算从当前时间currentDate开始,满足条件dayOfWeek, hourOfDay, minuteOfHour,
* secondOfMinite的最近时间
*/
public Calendar getEarliestDate(Calendar currentDate, int dayOfWeek, int hourOfDay, int minuteOfHour, int secondOfMinite) {
// 计算当前时间的WEEK_OF_YEAR,DAY_OF_WEEK, HOUR_OF_DAY, MINUTE,SECOND等各个字段值
int currentWeekOfYear = currentDate.get(Calendar.WEEK_OF_YEAR);
int currentDayOfWeek = currentDate.get(Calendar.DAY_OF_WEEK);
int currentHour = currentDate.get(Calendar.HOUR_OF_DAY);
int currentMinute = currentDate.get(Calendar.MINUTE);
int currentSecond = currentDate.get(Calendar.SECOND);
// 如果输入条件中的dayOfWeek小于当前日期的dayOfWeek,则WEEK_OF_YEAR需要推迟一周
boolean weekLater = false;
if (dayOfWeek < currentDayOfWeek) {
weekLater = true;
} else if (dayOfWeek == currentDayOfWeek) {
// 当输入条件与当前日期的dayOfWeek相等时,如果输入条件中的
// hourOfDay小于当前日期的
// currentHour,则WEEK_OF_YEAR需要推迟一周
if (hourOfDay < currentHour) {
weekLater = true;
} else if (hourOfDay == currentHour) {
// 当输入条件与当前日期的dayOfWeek, hourOfDay相等时,
// 如果输入条件中的minuteOfHour小于当前日期的
// currentMinute,则WEEK_OF_YEAR需要推迟一周
if (minuteOfHour < currentMinute) {
weekLater = true;
} else if (minuteOfHour == currentSecond) {
// 当输入条件与当前日期的dayOfWeek, hourOfDay,
// minuteOfHour相等时,如果输入条件中的
// secondOfMinite小于当前日期的currentSecond,
// 则WEEK_OF_YEAR需要推迟一周
if (secondOfMinite < currentSecond) {
weekLater = true;
}
}
}
}
if (weekLater) {
// 设置当前日期中的WEEK_OF_YEAR为当前周推迟一周
currentDate.set(Calendar.WEEK_OF_YEAR, currentWeekOfYear + 1);
}
// 设置当前日期中的DAY_OF_WEEK,HOUR_OF_DAY,MINUTE,SECOND为输入条件中的值。
currentDate.set(Calendar.DAY_OF_WEEK, dayOfWeek);
currentDate.set(Calendar.HOUR_OF_DAY, hourOfDay);
currentDate.set(Calendar.MINUTE, minuteOfHour);
currentDate.set(Calendar.SECOND, secondOfMinite);
return currentDate;
}
public static void main(String[] args) {
//每周3 、12点、0分、0秒执行 (sunday:1 作为一周第一天)
int dayOfWeek_upindex = 4;
int hourOfDay_upindex = 12;
int minuteOfHour_upindex = 0;
int secondOfMinite_upindex = 0;
ScheduledExceutor job = new ScheduledExceutor("");
Calendar currentDate = Calendar.getInstance();
long currentDateLong = currentDate.getTime().getTime();
Calendar earliestDate = job.getEarliestDate(currentDate, dayOfWeek_upindex, hourOfDay_upindex, minuteOfHour_upindex,
secondOfMinite_upindex);
long earliestDateLong = earliestDate.getTime().getTime();
// 计算从当前时间到最近一次执行时间的时间间隔
long delay = earliestDateLong - currentDateLong;
System.out.println(delay);
// long period = 7 * 24 * 60 * 60 * 1000;
// service.scheduleAtFixedRate(job, delay, period, TimeUnit.MILLISECONDS);
}
}
相关推荐
Re: anya:请教一个问题 anya Re: 如何给汉字分界? anya Re: 八皇后算法问题请教? anya Re: 急寻图象压缩算法 anya 游戏中最佳路径的问题 anya 平面点覆盖问题求教 anya Re: 平面点覆盖问题求教 anya Re: ...
我是小菜鸟,请教各位高手这么四个问题: 1、如何读取城市坐标txt文件,坐标应该是一个二维数组格式吧? 例如一个5个城市坐标的txt文件,读取后应该为 city=[23 44;24 54;63 43;35 65;24 43] 应该用什么...
我是小菜鸟,请教各位高手这么四个问题: 1、如何读取城市坐标txt文件,坐标应该是一个二维数组格式吧? 例如一个5个城市坐标的txt文件,读取后应该为 city=[23 44;24 54;63 43;35 65;24 43] 应该用什么...
- 数据结构:程序采用顺序表作为存储结构,定义了一个名为`hufmtree`的结构体,包含数据成员`data`(存储节点值),`lchild`(左孩子指针),`rchild`(右孩子指针)以及`prnt`(父节点指针)。 - 算法实现:创建...
在运行程序过程中,某些粒子的适应度函数会出现INF或NAN,而我把相应的位置参数(x1)带入适应度函数,求出来就是一个实数。不知道是哪有问题。希望各位帮忙指教一下。 待求函数形式: Y=p1*x1p2 p3*x2p4 p5*x3p6 ...
蓝桥杯算法合集这个系列包括: 蓝桥杯常用算法系列 蓝桥杯五年真题两次模拟系列 算法竞赛Java常用API总结 以及 常用数据结构 这四个模块,里面的算法题目大多是蓝桥杯历届真题。文章都是自己备战学习过程中总结出来...
在这个项目中,开发者分享了源代码并提出了一个优化问题,即如何减少游戏的内存需求。 源码分析: 1. **数据结构与算法优化**:游戏中的敌人资源存储在`a.json`文件中,这可能是一个JSON格式的文件,用于描述敌人...
设计的目标是创建一个模拟真实对弈感受的五子棋人机对战系统。灵感来源于 AlphaGo 人工智能围棋程序,但简化为五子棋,减少计算复杂性。系统由 Matlab 游戏界面、FPGA 算法处理单元和串口通信模块组成。FPGA 使用的...
> 12,一个1300字节的IP包,包头长度为20字节,进入一个MTU为500的网络中,(A) > > A:1,分成三段,偏移量为0,460,920; 2,分成三段,偏移量为0,480,960; 3,分成三段,偏移量为0,500,1000; 4,都不对这个会不会是1啊...
这些问题通过查阅资料、向老师请教以及调整编程技巧得以解决。 通过本次实验,实验者不仅强化了对内部排序算法的理解,也提高了编程能力和问题解决能力。对各种排序算法的实际操作,使实验者能够更加熟练地运用这些...
本“多种算法GPA计算工具”旨在提供一个方便、准确的方式来计算GPA,适用于不同的评分体系和算法。 1. **不同评分体系的理解**: - 4.0制:最常见,A=4.0,B=3.0,C=2.0,D=1.0,F=0.0。 - 5.0制:一些学校或科目...
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...
【小弟的一个作业,第一次做这些,请教下】 这个标题表明了这是一项关于加密基础知识和安全通信的作业,可能是计算机科学或网络安全课程的一部分。作业的主要目的是让学生熟悉在课堂上学习的加密方法,并涉及网络编程...
8. 负载均衡工具:常见的工具有F5(硬件)和Nginx(软件),调度算法可选用轮询、权重轮询、最少连接数等。 9. 云主机与物理机连接:可以通过VPC(虚拟私有云)或隧道技术将云主机与公司内部网络连接,实现资源的...
解决这个问题,你可以尝试以下方法: - 检查并修复下载的文件,确保其完整性。 - 确认你的计算环境满足脚本的运行要求。 - 阅读并理解"liegie.m"脚本,确认其功能和使用方法。 - 如果脚本有误,寻找其他能带计算的...
在语音识别领域,噪声消除是预处理步骤中的一个重要环节,特别是在使用像MATLAB这样的编程环境进行分析时。傅里叶变换是一种将信号从时域转换到频域的强大工具,可以帮助我们识别并去除噪声成分。本篇文章将深入探讨...
最近在做图象多重分形的分析,在MATHWORKS上找到一个国外程序,可以做.但是分 析的结果有点问题,a-f图的fmax大于2.另外,在运行的时候,会提示错误Size vector should be a row vector with integer elements, ...
这是用遗传算法写的自动组卷源代码,只有一个文件,是别人写的,没看懂,希望传上去,有人看懂的话,就请教一下
我自己写了一个WinForm八数码研究软件,研究A*算法。 我用了SQL Server数据库来保存程序运行过程中所产生...(3)A*算法好像只能解决游戏中的小问题,能否提供一个解决实际应用的例子(带数据库的应用软件)。 谢谢!