java - 根据先前运行的结果安排定期任务

标签 java multithreading concurrency scheduled-tasks

我需要每 X 秒执行一次任务。
我知道我可以使用 TimerTaskScheduledThreadPool 但我的问题是该任务取决于状态。
IE。任务在运行 B 中执行的操作取决于运行 A 的结果。
对此进行编码的最佳方法是什么?
也许做一个

while(true){  
  //do stuff  
  Thread.sleep(5000);  
}  

这是我在这里能做的最好的事情吗?

最佳答案

只需在 TimerTask 实现中定义您的状态,然后使用 Timer:

TimerTask task = new TimerTask ()
{
    private int state = 0;

    @Override
    public void run ()
    {
        System.out.println ("State is: " + state);
        state += 1;
    }
};

new Timer ().schedule (task, 0L, 1000L);

这将永远每秒(每 1000L 毫秒)运行一次任务。

关于java - 根据先前运行的结果安排定期任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15089070/

相关文章:

java - 我可以使用 Thread isAlive 方法来更改我的 runnable 中的状态以执行代码吗?

scala - 在其他长期运行的 Actor 在场的情况下,如何防止 Actor 饥饿?

Java 并发规范 ? : Is an update to a field inside a synchronized block visible to all threads?

java - 启动 MS Outlook,并在电子邮件中添加附件

c++ - 为什么我的 4 线程实现不比单线程实现快?

python - 如何使用 PRAW (Reddit) 和多线程更新数据帧

c++ - 如何在 C++ 中同时写入和读取文件

java - 大约一半的用户在数据库更改后得到 `Bad Credentials`

java - 每个字母之间的字符

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException MySQL + Apache Tomcat 7