我在Raspberry Pi上编写了一个简单的java代码,它将数据从raspberry Pi发送到服务器。现在不是手动运行程序,而是希望程序在后台自动执行每10(任何特定时间)秒,因此新数据会在这段时间后发送到服务器。 Raspberry Pi正在Raspbian OS上运行。 有人可以帮我解决这个问题吗?先谢谢你..
答案 0 :(得分:1)
您有两种选择:定期从cron
或类似的方式运行您的作业,或将您的应用程序更改为长时间运行的进程,该进程将作为您设备上的服务运行,并将执行自己的计划。像Quartz(http://www.quartz-scheduler.org/)这样的库可以用来做后者。在启动作业(JVM的初始化和拆除)时,长时间运行作业的轻微优势可能会受到较小的惩罚。
答案 1 :(得分:1)
您可以使用java.util.Timer
代替您的应用Thread
。
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//write your code here
System.out.print(new Date() + "\n");
}
}, 0, 1000);
我认为这是解决问题的最简单方法。
答案 2 :(得分:0)
您可以使用Thread
在特定时间点执行代码。
示例:
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
while(true){
try{
//your code
Thread.sleep(10*1000);//this is poll interval
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
});
thread.setDaemon(true);
thread.start();
答案 3 :(得分:0)
我找到了答案。 使用crontab可以在特定的时间间隔执行任务。 对于java文件,你必须创建一个jar文件,然后如果你想在每一分钟后运行,那么crontab的语法是
- java -jar /path_of_your_jar_file/File_name.jar
但问题是你的任务每1分钟重复一次。因此,如果你想在10秒内完成它,那么你必须使用线程休眠。 线程睡眠代码是
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
method_name();
}
},0,10000);