用Java实现中断服务例程
我正在构建一个连接到路由器的应用程序,获取一些数据并将获取的数据插入数据库 我需要每隔30秒从路由器获取数据。然后回来用新获取的数据更新数据库 我不知道如何实现计时器机制(它类似于中断服务例程机制) 我是Java新手,有什么帮助吗?我应该用线吗?我简单地读了一些关于线程的文章,但不知道它们是如何工作的 编辑:用Java实现中断服务例程,java,multithreading,timer,interrupt,Java,Multithreading,Timer,Interrupt,我正在构建一个连接到路由器的应用程序,获取一些数据并将获取的数据插入数据库 我需要每隔30秒从路由器获取数据。然后回来用新获取的数据更新数据库 我不知道如何实现计时器机制(它类似于中断服务例程机制) 我是Java新手,有什么帮助吗?我应该用线吗?我简单地读了一些关于线程的文章,但不知道它们是如何工作的 编辑: 请注意,我主要还有其他事情要做。主要任务是执行几个函数。但是,每30秒我就要执行一个附加函数。因为您需要运行其他代码,所以可以这样做 ScheduleExecutorService ses
请注意,我主要还有其他事情要做。主要任务是执行几个函数。但是,每30秒我就要执行一个附加函数。因为您需要运行其他代码,所以可以这样做
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);
}
您至少需要一个线程,但从一个线程开始。正如您需要运行其他代码一样,您可以这样做
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);
}
您至少需要一个线程,但从一个线程开始。正如您需要运行其他代码一样,您可以这样做
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);
}
您至少需要一个线程,但从一个线程开始。正如您需要运行其他代码一样,您可以这样做
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);
}
您至少需要一个线程,但从一个线程开始。更简洁的方法是安排一个定期任务 您可以使用不同的API:
- ScheduledExecutorService.scheduleAtFixedRate(…)
- Timer.scheduleAtFixedRate(..)
两者都将定期执行代码。更简洁的方法是安排定期任务 您可以使用不同的API:
- ScheduledExecutorService.scheduleAtFixedRate(…)
- Timer.scheduleAtFixedRate(..)
两者都将定期执行代码。更简洁的方法是安排定期任务 您可以使用不同的API:
- ScheduledExecutorService.scheduleAtFixedRate(…)
- Timer.scheduleAtFixedRate(..)
两者都将定期执行代码。更简洁的方法是安排定期任务 您可以使用不同的API:
- ScheduledExecutorService.scheduleAtFixedRate(…)
- Timer.scheduleAtFixedRate(..)
两者都将定期执行代码。
ScheduledExecutorService
ScheduledExecutorService
ScheduledExecutorService
ScheduledExecutorService
。我主要还有其他事情要做,我不想睡觉。这就是为什么我叫它中断服务程序。主要任务是执行几个函数。但是,每30秒我就要执行一个附加函数。@ShadyAhmed你没有这么说。您可以将这些详细信息添加到问题中吗?我找不到可以找到的newScheduledExecutorService函数:newScheduledThreadPool@ShadyAhmed我现在已经修好了。我还有其他事情要做,我不想睡觉。这就是为什么我叫它中断服务程序。主要任务是执行几个函数。但是,每30秒我就要执行一个附加函数。@ShadyAhmed你没有这么说。您可以将这些详细信息添加到问题中吗?我找不到可以找到的newScheduledExecutorService函数:newScheduledThreadPool@ShadyAhmed我现在已经修好了。我还有其他事情要做,我不想睡觉。这就是为什么我叫它中断服务程序。主要任务是执行几个函数。但是,每30秒我就要执行一个附加函数。@ShadyAhmed你没有这么说。您可以将这些详细信息添加到问题中吗?我找不到可以找到的newScheduledExecutorService函数:newScheduledThreadPool@ShadyAhmed我现在已经修好了。我还有其他事情要做,我不想睡觉。这就是为什么我叫它中断服务程序。主要任务是执行几个函数。但是,每30秒我就要执行一个附加函数。@ShadyAhmed你没有这么说。您可以将这些详细信息添加到问题中吗?我找不到可以找到的newScheduledExecutorService函数:newScheduledThreadPool@ShadyAhmed我现在已经解决了。谢谢你的关心,但我已经尝试了一段时间,我感到困惑。ScheduledExecutorService.scheduleAtFixedRate将第一个参数作为可运行参数。虽然Timer.scheduleAtFixedRate第一个参数是可调用的,但它们是什么?我检查了文档,但我不明白,我必须创建一个新类并将其传递到那里吗?Runnable/Callable应该由包含检索数据和更新数据库所需代码的类(可以是匿名类)实现。i、 所有必须定期执行的代码。谢谢你的关注,但我已经尝试了一段时间,我感到困惑。ScheduledExecutorService.scheduleAtFixedRate将第一个参数作为可运行参数。虽然Timer.scheduleAtFixedRate第一个参数是可调用的,但它们是什么?我检查了文档,但我不明白,我必须创建一个新类并将其传递到那里吗?Runnable/Callable应该由包含检索数据和更新数据库所需代码的类(可以是匿名类)实现。i、 所有必须定期执行的代码。谢谢你的关注,但我已经尝试了一段时间,我感到困惑。ScheduledExecutorService.scheduleAtFixedRate将第一个参数作为可运行参数。虽然Timer.scheduleAtFixedRate第一个参数是可调用的,但它们是什么?我检查了文档,但我不明白,我必须创建一个新类并将其传递到那里吗?Runnable/Callable应该由包含检索数据和更新数据库所需代码的类(可以是匿名类)实现。i、 所有必须定期执行的代码。谢谢你的关注,但我已经尝试了一段时间