「java定时扫描」java扫描器的用法
本篇文章给大家谈谈java定时扫描,以及java扫描器的用法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何用java实现定时扫描文件夹
- 2、请问 java 怎么定时扫描 获得最新的 新建的文件的名字,请给点思路。谢谢 分少,不好意思。。。。。
- 3、java 定时的问题,我现在想实现的是每个月的第四个工作日中午十二点去扫描数据库,修改一个字段的状态
- 4、java写一个监控器,每月1号一点扫描一次,注意每月只扫描一次,考虑效率问题和资源问题!!!求大侠啊!!
如何用java实现定时扫描文件夹
写一个类继承Thread,重写run方法,在run方法里面写你要做的处理,然后根据你的定时要求来设置sleep的时间。
new Thread(){
run() {
// 根据具体需求设置时间:毫秒
sleep(100ms);
while (true) {
// 扫描文件夹处理
....
// 根据具体需求设置时间:毫秒
sleep(24 * 3600 * 1000);
}
}
}
java中不是有定时器吗?写好自己的任务,定时执行就可以了
Timer timer = new Timer();
Task task = new Task(){
public void run(){
System.out.println("running...");
}
};
timer.shedule(task,delayDate,internalTime);
这种跟操作系统关系紧密的操作没必要用java来做,除非你是J2EE,那么Spring里有quataz类似Unix里面cronjob的开源框架可以用,很方便
Unix、linux操作系统配到cronjob里即可,Windows操作系统的“开始”-》“附件”-》系统工具-》计划任务
请问 java 怎么定时扫描 获得最新的 新建的文件的名字,请给点思路。谢谢 分少,不好意思。。。。。
java本身是不能获取文件创建时间的,只能用lastModified方法获取最后修改时间。如果一定要新建文件的名字的话,恐怕只能使用JNI技术调用其他语言了,比如调用C++写的dll
java 定时的问题,我现在想实现的是每个月的第四个工作日中午十二点去扫描数据库,修改一个字段的状态
修改数据库可以使用数据库本身的计划任务(job),这种方式最好。
第二种是使用程序来做如java的timer和timetask。保证在项目启动的时候启动该计划任务。
public static void main(String[] args) {
//定时任务
final Timer timer = new Timer();
// 指定任务在星期四中午12:00执行
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 0);
java.util.Date time = calendar.getTime();
timer.schedule(new TimerTask() {
public void run() {
// 你要执行的操作
try{
} catch (Exception e) {
// 出现异常的操作:如取消计划任务
timer.cancel();
}
}
},time);
}
java写一个监控器,每月1号一点扫描一次,注意每月只扫描一次,考虑效率问题和资源问题!!!求大侠啊!!
不想写代码了,给你一个我写过的参考吧,我的这个是每天晚上0点时执行程序,一天只执行一次,效率认为还不错。
package prepare;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Auto_Prepare extends Thread {
// SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");// 格式化日期
// SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");// 格式化时间
SimpleDateFormat sdfTime_ALL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化时间
public Auto_Prepare() {
}
public void run() {
// TODO Auto-generated method stub
int way = 1;// 选择的方法
System.out.println("选择的方法是:方法" + way);
if (way == 1) {// 用Thread.Sleep()方法实现
while (true) {
int ON_RestTime = 20;// 如果进行了准备工作,线程的睡眠时间,单位:小时
int OFF_RestTime = 59;// 如果不进行准备工作,线程的睡眠时间,单位:分钟
// /////////////////////////////////////////////////////////////格式化时间
Calendar Now = Calendar.getInstance();
String strTime = "现在时刻北京时间:"
+ sdfTime_ALL.format(Now.getTime()) + "----";
if (Now.get(Calendar.HOUR_OF_DAY) == 0) {
// 即当时间是0点时,开始执行下列语句
System.out.println("abcdefghijklmnopqrstuvwxyz");
System.out.println("Auto_Prepare.java====" + strTime
+ "开始准备所有数据...");
Date SHDate = Now.getTime();// 执行准备工作前的时间
PrepareData(Now);// 执行准备工作
Now = Calendar.getInstance();// 现在的时间
long RunTime = Now.getTime().getTime() - SHDate.getTime();// 准备数据消耗的时间
int hr = (int) RunTime / 1000 / 60 / 60;
int mr = (int) RunTime / 1000 / 60 - hr * 60;
int sr = (int) RunTime / 1000 - hr * 60 * 60 - mr * 60;
System.out.println("Auto_Prepare.java====现在时刻北京时间:"
+ sdfTime_ALL.format(Now.getTime())
+ "----准备工作运行时间为:" + hr + "小时" + mr + "分" + sr
+ "秒。");
Now = Calendar.getInstance();// 现在的时间
long SleepTime = ON_RestTime * 60 * 60 * 1000
+ (24 - ON_RestTime) * (60 - OFF_RestTime) * 60
* 1000 - RunTime;
// 加(24-ON_RestTime)*(60-OFF_RestTime)分钟的目的
// 是消除一天中有四次睡眠OFF_RestTime分钟造成的误差。
int hs = (int) SleepTime / 1000 / 60 / 60;
int ms = (int) SleepTime / 1000 / 60 - hs * 60;
int ss = (int) SleepTime / 1000 - hs * 60 * 60 - ms * 60;
System.out.println("Auto_Prepare.java====现在时刻北京时间:"
+ sdfTime_ALL.format(Now.getTime())
+ "----所有数据准备完毕,线程睡眠:" + hs + "小时" + ms + "分" + ss
+ "秒。");
try {
Auto_Prepare.sleep(SleepTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {// 不是0点,睡眠OFF_RestTime分钟
Date SHDate = Now.getTime();
Now = Calendar.getInstance();
long RunTime = Now.getTime().getTime() - SHDate.getTime();// 程序运行消耗的时间
int hr = (int) RunTime / 1000 / 60 / 60;
int mr = (int) RunTime / 1000 / 60 - hr * 60;
int sr = (int) RunTime / 1000 - hr * 60 * 60 - mr * 60;
System.out
.println("Auto_Prepare.java====现在时刻北京时间:"
+ sdfTime_ALL.format(Now.getTime())
+ "----程序运行时间为:" + hr + "小时" + mr + "分"
+ sr + "秒。");
Now = Calendar.getInstance();// 现在的时间
long SleepTime = OFF_RestTime * 60 * 1000 - RunTime;
int hs = (int) SleepTime / 1000 / 60 / 60;
int ms = (int) SleepTime / 1000 / 60 - hs * 60;
int ss = (int) SleepTime / 1000 - hs * 60 * 60 - ms * 60;
System.out.println("Auto_Prepare.java====现在时刻北京时间:"
+ sdfTime_ALL.format(Now.getTime())
+ "----时间不是0点,不做准备工作,线程睡眠:" + hs + "小时" + ms + "分"
+ ss + "秒。");
try {
Auto_Prepare.sleep(SleepTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}// while(true)
} else if (way == 2) {
}
}
private void PrepareData(Calendar now) {
//准备工作,即你需要让程序处理的事情
}
}
关于java定时扫描和java扫描器的用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。