java中一个定时程序

自己封装一个类

 代码如下 复制代码

package com.anllin.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ScheduleUtil
{
    private static DateFormat format()
    {
        return new SimpleDateFormat("HH:mm:ss:SSS");
    }

    private static Date parseTime(String time) throws ParseException
    {
        return format().parse(time);
    }

    private static long getOneDayMilliseconds()
    {
        return 24 * 60 * 60 * 1000L;
    }

    private static long getMillisecondsInOneDayBetween(String now, String future) throws ParseException
    {
        Date nowDate = parseTime(now);
        Date futureDate = parseTime(future);
        long nowTime = nowDate.getTime();
        long futureTime = futureDate.getTime();
        if (futureTime > nowTime)
        {
            return futureTime - nowTime;
        }
        else
        {
            return (futureTime + getOneDayMilliseconds()) - nowTime;
        }
    }

    public static void scheduleEveryday(ScheduledThreadPoolExecutor executor, Runnable command,
            String executedEverydayAt) throws ParseException
    {
        long initialDelay = getMillisecondsInOneDayBetween(format().format(new Date()), executedEverydayAt);
        long period = getOneDayMilliseconds();
        executor.scheduleAtFixedRate(command, initialDelay, period, TimeUnit.MILLISECONDS);
    }
}

调用方法

 代码如下 复制代码

public static void main(String[] args) throws Exception
    {
        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5);
        String executedEverydayAt = "12:00:00:000";
        ScheduleUtil.scheduleEveryday(executor, new Runnable(){
            public void run()
            {
                System.out.println("执行业务逻辑");
            }
        }, executedEverydayAt);
    }

时间: 2024-09-13 13:06:31

java中一个定时程序的相关文章

窗口-如何判断一个java中一个程序关闭

问题描述 如何判断一个java中一个程序关闭 if(e.getActionCommand().equals("按学号查询" ) || e.getActionCommand().equals("按姓名查询" ) )//按学号查询" { new 姓名查询(); this.setEnabled(false); //我想在这里判断 姓名查询()关闭的话这把 this.setEnabled(false);改为 this.setEnabled(true); } 希望有

求android中一个定时提醒功能的实现思路!

问题描述 求android中一个定时提醒功能的实现思路! 比如在一个记事本中,我写了一项任务,想加一个定时提醒功能,类似闹钟一样,但又和闹钟不一样,闹钟只能定今天的时间,我想定任意一天的任意时刻的一个提醒功能,跪求实现思路!!! 解决方案 http://blog.csdn.net/wanglang3081/article/details/7456684 解决方案二: 这一个service在后台运行,实时检查时间 解决方案三: Timer定时机制. 解决方案四: 如果要实现任意天任意时刻,那就必须

JAVA 中一个字符串s ,有36位取前24位,代码怎么写?

问题描述 JAVA 中一个字符串s ,有36位取前24位,代码怎么写? 求解..JAVA 中 一个字符串s ,有36位取前24位,代码怎么写? 解决方案 s.substring(0 24) 解决方案二: s = s.subString(s 24); 解决方案三: s.substring(024); substring()方法包头不包尾索引从0开始 解决方案四: s = s.subString(024); substring()方法包头不包尾索引从0开始 解决方案五: s = s.subStrin

java中一个商品列表集合简单问题

问题描述 java中一个商品列表集合简单问题 java中一个商品列表集合简单问题 java中一个商品列表集合简单问题 肯德可以理解为对象,java一切都是对象 那么可以理解为一个类吗可以理解为一个数组吗,可以理解为一种数据泪腺吗 解决方案 对象集合类是类,但不能说对象集合的对象是一个类,对象就是类的实例,和类是不等的.数组是指基本数据类型集合.比如int [] arrs = new int[]{},而List 等类创建的对象集只能称为集合.不能理解为数据类型.数据类型只有基本类型和引用类型.

java中一个汉字和一个字母所占内存字节比较以及后台验证的减半处理

  基本概念 我们一般理解java中 一个字符char占2个字节byte 一个汉字占2个字节byte 一个字母占1个字节byte   其他情况 对于汉字来说,采用gbk编码占两字节,采用utf8编码占三个字节.   String的length()方法 String s1 = "aa"; String s2 = "a好"; s1.length() s2.length() 答案都是2,因为该方法是返回字符的个数,并不是内存中的字节数.   数据库应用 java的编码不会

java 接口 接口实现-Java中一个类如何实现多个接口中同名同参返回值不同的方法?

问题描述 Java中一个类如何实现多个接口中同名同参返回值不同的方法? 如:` class A implements Interface1,Interface2{ //这里该怎么写呢? } interface Interface1{ public void method(); } interface Interface2{ public int method(); } 解决方案 class A implements Interface1,Interface2{ //直接写啊 public voi

java中一个类的方法与方法之间可以有联系,也可以相互孤立吗

问题描述 java中一个类的方法与方法之间可以有联系,也可以相互孤立吗 java中一个类的方法与方法之间可以有联系,也可以相互孤立吗什么情况要孤立,什么情况要有联系呢 解决方案 看需求.比如说class A{ float get长度() { ... } float get宽度() { ... } float get面积() { return get长度()*get宽度(); }}这里就需要调用另外两个方法 解决方案二: 现在还有人有这玩意嘛 解决方案三: 类的方法主要是对属性的一些操作,方法作用

在java中一个方法抛两个异常会怎样

问题描述 在java中一个方法抛两个异常会怎样 在一个java方法中同时用throw和throws抛出异常.会有不良的影响么.会不会有一个一个异常抛不出去的情况发生啊?求大神帮帮忙 解决方案 他俩用的地方不一样,throws是写在方法后面,其他地方调用时,要捕获,throw是在方法内直接抛出,可以一起用throw触发了,估计就到不了throws的捕获了,看你具体怎样用的 解决方案二: 方法声明时可以抛出异常,但是并不代表调用这个方法时会发生异常. 测试要构造异常条件才能走入异常分支的啊.例如:

class-为什么说java中一个类中定义两个构造函数。

问题描述 为什么说java中一个类中定义两个构造函数. 为什么说java中一个类中定义两个构造函数.是不是意思就是一个是无参构造函数,一个是有参数的构造函数, 解决方案 构造函数可以定义很多个,如同函数重载,只要参数个数类型不同就可以. 因此无参构造函数只能有一个.至于定义2个,可以是一个无参,一个有参,也可以是2个有参. 解决方案二: oh no, an object can have multiple constructors with different parameters. 解决方案三