java中一個定時程式

來源:互聯網
上載者:User

自己封裝一個類

 代碼如下 複製代碼

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);
    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.