Java 定时循环运行程序

Timer 和 ScheduledExecutorSeruvce 都能执行定时的循环任务,有函数 scheduleAtFixedRate。但是,如果任务运行时间较长,超过了一个周期时长,下一个任务就会被延缓执行。

例如代码:

public class ScheduledRunnableTest extends TimerTask {

public void run() {

try {

Thread.sleep(2000);

System.out.println(new Timestamp(System.currentTimeMillis()).toString());

} catch (InterruptedException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

Timer timer = new Timer();

timer.scheduleAtFixedRate(new ScheduledRunnableTest(), 0, 1000);

}

}

运行结果为:

2014-07-31 13:12:30.002

2014-07-31 13:12:32.006

2014-07-31 13:12:34.006

2014-07-31 13:12:36.008

并不是希望的每秒运行一次。所以得重开线程执行,代码如下:

public class ScehduledThreadTest extends Thread{

public void run() {

try {

Thread.sleep(2000);

System.out.println(new Timestamp(System.currentTimeMillis()).toString());

} catch (InterruptedException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

public void run() {

new ScehduledThreadTest().start();

}

},

0, 1000);

}

}

这样的结果就是:

2014-07-31 13:15:10.652

2014-07-31 13:15:11.652

2014-07-31 13:15:12.652

Java 定时循环运行程序

时间: 2024-10-12 08:08:25

Java 定时循环运行程序的相关文章

java For 循环 运行顺序

运行结果: abi love javacbi love javacbi love javacbi love javac 结论:先运行赋值语句i--->条件判断--->执行下面语句--->改变数值i--->条件判断...........循环 直到条件不满足 原文地址:https://www.cnblogs.com/fax1996/p/9288571.html

linux中启动 java -jar 后台运行程序

直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉.以下方法可让jar运行后一直在后台运行. 1. java -jar xxx.jar & 说明: 在末尾加入 & 符号 2. (1)执行java -jar xxx.jar后 (2)ctrl+z 退出到控制台,执行 bg (3)exit 完成以上3步,退出SHELL后,jar服务一直在后台运行. 3. nohup java -jar xxxx.jar & 将java -jar xxxx.jar 加入  

bat脚本命令循环运行程序 ,然后指定时间退出。

@echo offtitle EcCheck // 显示标题 :loopif "%time%" GTR "23:00.00" (exit) else goto t //如果系统时间是23点退出程序.如果不是则继续进行t标签的程序:tcd C:\ECsystem\publishC:\ECsystem\publish\wfmain.exe exeitem -user=0036 -jobcd=SP_VERSION_CHECK -itemid=7060 -itemid=70

Java 命令行运行java程序,出现“找不到或无法加载主类 ”的注意事项

引用:http://blog.chinaunix.net/uid-27106528-id-5209914.html 要在CMD命令行中使用java 运行java程序,关于出现 “找不到或无法加载主类 ”错误的解决办法,   网络上基本都是在说关于"classpath"路径的配置问题,要加入 ” .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;“    前面加入”.;",表面要在当前目录下面寻找类.       如果你试过了

如何在LINUX中开机、登陆、退出、定时、定期自动运行程序

1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序.例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window. 2.登录时自动运行程序 用户登录时,bash首先自动执行系

JAVA 的 基础与程序运行

简介: 在最初是为家用电器设计的,因为其特性刚好适合于Internet,于是通过在Internet上的应用得以迅速流行,成为一种计算机语言,一个平台,一个网络计算的架构. JAVA语言是一种面向对象编程语言,类是java程序的基本构造单元,JAVA中的所有语句都出现在一个 类中.面向对象包括了两个基本概念:对象和类. JAVA是一种简单的,面向对象的,分布式的,解释的,安全的,可移植的,性能优秀的语言.它一其强安全性,平台无关性,硬件结构无关性,语言简洁,面向对象的特点,在网络编程语言中占据了无

黑马程序员——java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序

获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class Test5 { public static void main(String[] args) th

Eclipse运行程序提示:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

问题描述: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 问题原因: 程序中对象引用过多导致堆空间不足,导致内存溢出 解决方案: (增大Java虚拟机的内存空间) 打开Eclipse,选择"Run" - "Run Configurations" - "(x)=Arguments",VM arguments栏中填写 -Xmx800m

Java初学者:java是如何在命令行下编译运行程序的

我们上文书说到,我们首先安装Java,然后设置Java环境,然后编译运行了一个简单的Java程序,在命令行模式下显示了一个“Hello baby”.那么,为什么呢?发生了什么呢? 首先,下载安装Java就不用问为什么了对吧?所谓巧妇难为无米之炊,没有Java却想用,这不可能的. 其次,为什么我们要那样设置Java的运行环境呢? 因为,目前为止,我只是想在命令行下编译运行java程序,这样一来,你就需要让命令行模式识别java的命令.而命令行下能自动识别的命令,必须我们手动的把命令的路径添加进去.