用Java实现中断服务程序

时间:2013-12-24 09:58:51

标签: java multithreading timer interrupt

我正在构建一个连接到路由器的应用程序,获取一些数据并将获取的数据插入数据库。

我需要每30秒从路由器获取一次数据。然后返回使用新获取的数据更新数据库。

我不知道如何实现该计时器机制(它类似于中断服务例程机制)。

我是Java的新手,任何帮助?我应该使用线程吗?我简要地阅读了关于线程的内容,但并不确切知道它们是如何工作的。

编辑: 请注意,主要还有其他事情要做。主要是执行几个功能。但是,每30秒我想执行一个附加功能。

2 个答案:

答案 0 :(得分:2)

由于您需要运行其他代码,您可以

ScheduleExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(new Runnable() {
    public void run() {
        Data data = getDataFromRouter();
        updateDatabase(data);
    }
}, 0, 30, TimeUnit.SECONDS);

另外,我会有一个像这样的简单循环。

while(true) {
    Data data = getDataFromRouter();
    updateDatabase(data);
    Thread.sleep(30 * 1000);
}

您至少需要一个线程,但是从一个线程开始。

答案 1 :(得分:1)

更简洁的方法是安排定期任务。

您可以使用不同的API:

  • ScheduledExecutorService.scheduleAtFixedRate(...)
  • Timer.scheduleAtFixedRate(..)

两者都会定期执行您的代码。