当前位置: 首页 > 面试题库 >

如何在特定时间安排任务?

鄢松
2023-03-14
问题内容

我的Java
Scheduler有一个问题,我的实际需要是我必须在特定时间启动我的进程,并且我将在特定时间停止,我可以在特定时间启动我的进程,但是我不能在特定时间停止我的进程,如何指定进程在调度程序中运行多长时间(在这里我不会放),任何人对此都有建议。

import java.util.Timer;
import java.util.TimerTask;
import java.text.SimpleDateFormat;
import java.util.*;
public class Timer
{
    public static void main(String[] args) throws Exception
    {

                  Date timeToRun = new Date(System.currentTimeMillis());
                  System.out.println(timeToRun);
                  Timer timer1 = new Timer();
                  timer1.schedule(new TimerTask() 
                   { 
                     public void run() 
                               {

                        //here i call another method
                        }

                    } }, timeToRun);//her i specify my start time


            }
}

问题答案:

您可以使用ScheduledExecutorService带有2个计划的计划,一个计划运行任务,另一个计划终止任务-参见下面的简化示例:

public static void main(String[] args) throws InterruptedException {
    final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);

    Runnable task = new Runnable() {
        @Override
        public void run() {
            System.out.println("Starting task");
            scheduler.schedule(stopTask(),500, TimeUnit.MILLISECONDS);
            try {
                System.out.println("Sleeping now");
                Thread.sleep(Integer.MAX_VALUE);
            } catch (InterruptedException ex) {
                System.out.println("I've been interrupted, bye bye");
            }
        }
    };

    scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS); //run task every second
    Thread.sleep(3000);
    scheduler.shutdownNow();
}

private static Runnable stopTask() {
    final Thread taskThread = Thread.currentThread();
    return new Runnable() {

        @Override
        public void run() {
            taskThread.interrupt();
        }
    };
}


 类似资料:
  • 问题内容: 我研究了,但是示例仅涉及使其重现。我正在寻找一种类似的功能,例如说“每个星期一的凌晨1点执行此任务”的功能。 问题答案: 感谢Patrick Altman,最近发布的1.0.3版现在支持此功能。 例:

  • 问题内容: 我研究了,但是示例仅涉及使其重现。我正在寻找一种类似的功能,例如说“每个星期一的凌晨1点执行此任务”的功能。 问题答案: 感谢Patrick Altman,最近发布的1.0.3版现在支持此功能。 例: 请参阅更改日志以获取更多信息: http://celeryproject.org/docs/changelog.html

  • WorkManager是一个库,用于对满足其约束后保证执行的工作进行排队。 因此,在查看了Constraints类之后,我还没有找到任何函数来为工作添加时间约束。例如,我希望在早上8:00AM开始执行一个工作(该工作可以是OneTimeWorkRequest或PerioadWorkRequest两种类型中的任何一种)。如何添加约束以使用WorkManager调度此工作。

  • 问题内容: 我需要安排任务以固定的时间间隔运行。如何在长间隔(例如每8个小时)的支持下执行此操作? 我目前正在使用。是否支持长时间间隔? 问题答案: 使用:

  • 问题内容: 我想以特定的时间间隔自动安排线程。我还需要在后台连续执行此操作,而不会挂在设备上。 我已经使用Application Manager Class进行了尝试,但这是用于应用程序调度的,我需要在应用程序内调度线程。 问题答案: 我会使用TimerTask: 请参阅BlackBerry API隐藏的宝石(第二部分)

  • 我在Tomcat中部署了一个web应用程序。我有一套代码,它检查数据库中的某些数据,然后根据这些数据向用户发送邮件。有人能建议如何在Tomcat中安排这项工作吗。