最近再写一个水质监测项目,在串口读取数据后,需要存数据到数据库,串口监听类,每秒都会接收到数据.
在统计时,并不需要这么多数据.于是,需要Java定时任务来实现,每隔多久传输一次数据.
1.使用Thread.sleep()实现间隔效果
import java.text.SimpleDateFormat; import java.util.Date; /** * Created by 94829 on 2018-06-10. */ public class Timers { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Boolean result = false; int count = 0; while(!result) { try { Thread.sleep(5 * 1000); //设置暂停的时间 5 秒 count ++ ; System.out.println(sdf.format(new Date()) + "--循环执行第" + count + "次"); if (count == 3) { result = true; break ; } } catch (InterruptedException e) { e.printStackTrace(); } } } }
2.Java定时器,使用java定时器需要继承java TimerTask(java.util包下)类,并重写run方法;
package time; import java.util.TimerTask; /** * Created by 94829 on 2018-06-10. */ public class MyTask extends TimerTask { private int i = 1; @Override public void run() { System.out.println("正在执行第:"+i+" 次!"); i++; } }
package time; import java.util.Timer; /** * Created by 94829 on 2018-06-10. */ public class Test { public static void main(String[] args) { Timer time = new Timer(); time.schedule(new MyTask(), 1000, 2000); //1s之后开始执行,每2秒执行一次,参数单位(毫秒) while(true){ try { int in = System.in.read(); //控制台输入t时停止定时器,具体定时器开关可根据实际业务需要自己设计 if (in == 't') { time.cancel(); //关闭定时器操作 break; } } catch (Exception e) { } } } }
参考了以下文章:
https://blog.csdn.net/sinat_28505133/article/details/79642923