【问题标题】:how to create thread which should run for every 30secs using java? [closed]如何使用java创建每30秒运行一次的线程? [关闭]
【发布时间】:2012-05-29 14:08:45
【问题描述】:

我想在 java 中创建一个每 30 秒运行一次的线程,并且应该在 mySQL 中删除数据库中的特定记录。提前致谢。

【问题讨论】:

  • 那么你有什么尝试?您可以编辑您的帖子以显示一些代码示例吗?你做了什么研究?
  • 你的问题是什么?如果我们可以为您编写代码?向我们展示您的解决方案,我们将帮助您改进它。
  • 为什么不使用MySQL event scheduler
  • 抱歉朋友们,我是新手。接受我的请求

标签: java mysql multithreading


【解决方案1】:

出于同样的原因,我刚刚做了类似的事情,这是我的代码:

package com.xxx.thread;

public class Updater implements Runnable{

    @Override
    public void run() {

        while(true) {
            try {
                //do work here
                Thread.sleep(1000*60*60); //sleep time in ms
            } catch (InterruptedException ex) {
            }
        }
    }



}

启动线程:

 Thread myThread = new Thread(new Updater());
 myThread.start();

【讨论】:

  • 非常感谢上面的代码对我有用
【解决方案2】:

需要一些代码示例吗?

public void schedule(){
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            //TODO write your code
        }
    }, 1000,1000*30);
}

【讨论】:

    【解决方案3】:

    我不同意接受的答案。 Thread.sleep 可能是解决您的问题的最糟糕的方法,因为它不准确且混乱(需要循环 + 调用 sleep + 取消机制)。最可接受的方式是使用ScheduledThreadPoolExecutor

    ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
    exec.submit(new Runnable() {
          public void run() {
              // update db here
          }
       }, 0, 30, TimeUnit.SECONDS);
    

    【讨论】:

      猜你喜欢
      • 2012-03-26
      • 2015-01-18
      • 1970-01-01
      • 2015-10-24
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多