「java定时扫描」java扫描器的用法

博主:adminadmin 2022-11-28 05:37:07 63

本篇文章给大家谈谈java定时扫描,以及java扫描器的用法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用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扫描器的用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。