import java.util.Timer; import java.util.TimerTask;public class TimerTest {
public static void main(String[] args) { test2 test = new test2(); Timer time = new Timer(); time.scheduleAtFixedRate(test.new RunTimer(),5000,200); time.schedule(test.new RunTimer(),5000,1000); } class RunTimer extends TimerTask { int i = 0; public void run() { System.out.println("" + (i++)); } } }
import java.util.TimerTask;public class TimerTest {
public static void main(String[] args) {
test2 test = new test2();
Timer time = new Timer();
time.scheduleAtFixedRate(test.new RunTimer(),5000,200);
time.schedule(test.new RunTimer(),5000,1000);
} class RunTimer extends TimerTask {
int i = 0;
public void run() {
System.out.println("" + (i++));
} }
}
你这个问题绝对是小菜
Calendar CurrentTime=Calendar.getInstance();
CurrentTime.set(Calendar.HOUR,0);
CurrentTime.set(Calendar.MINUTE,0);
CurrentTime.set(Calendar.MILLISECOND,0);
CurrentTime.add(Calendar.HOUR,1);
Date NextHour=CurrentTime.getTime();
timer.schedule(new RenameTask(),NextHour,JOB_INTERNAL);
import java.util.Date;
import java.util.Timer;public class OneHour { private final static long JOB_INTERNAL = 1000 * 60 * 60; /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Timer timer = new Timer();
// timer.scheduleAtFixedRate(new MyTask, ); Calendar currentTime = Calendar.getInstance();
currentTime.setTime(new Date());
int currentHour = currentTime.get(Calendar.HOUR);
currentTime.set(Calendar.HOUR, currentHour + 1);
currentTime.set(Calendar.MINUTE, 0);
currentTime.set(Calendar.SECOND, 0);
currentTime.set(Calendar.MILLISECOND, 0);
Date NextHour = currentTime.getTime();
// System.out.println(NextHour);
timer.scheduleAtFixedRate(new MyTask(), NextHour, JOB_INTERNAL);
}}import java.util.Date;
import java.util.TimerTask;
class MyTask extends TimerTask { @Override
public void run() {
// TODO Auto-generated method stub
System.out.println(new Date());
}}这个应该差不多了, 还有不要用Schedule().
我改成JOB_INTERNAL = 2000;可以让它两秒钟执行一次吗?为什么我改了好像不行呢?
大致讲一下你的代码好吗?学习……谢谢
我改成JOB_INTERNAL = 2000;可以让它两秒钟执行一次吗?为什么我改了好像不行呢?
大致讲一下你的代码好吗?学习……谢谢
------------
肯定不行啦, 它第一次执行的时候会选下一个整点小时的时候. 说下大体思路: 先取当前时间, 比如说是12:30:45,321, 然后把这个时间的分秒微秒都设成0, 就变成了12:00:00,000, 在这个基础上再把小时数加1, 变成了13:00:00,000, 这个就是下一个整点小时的时间嘛.
具体细节看代码查帮助吧.
-----------
测试的时候可以改成下一整点分钟开始执行, 哈哈. 不然要急死的.
明白了。我改了一下冷血动物的代码,可以立即执行了,(从当前算起)
private final static long JOB_INTERNAL = 5000;
currentTime.set(Calendar.HOUR, currentTime.get(Calendar.HOUR));
currentTime.set(Calendar.MINUTE, currentTime.get(Calendar.MINUTE));
currentTime.set(Calendar.SECOND, currentTime.get(Calendar.SECOND));
currentTime.set(Calendar.MILLISECOND, currentTime.get(Calendar.MILLISECOND));
从现在起,5秒执行一次了,呵呵
谢谢冷血动物
还有一个问题,为什么不用Schedule,而是用scheduleAtFixedRate
比如:5点运行一个任务,5点10分完成,如果用schedule,下次运行时间应该是:6点,如果使用scheduleAtFixedRate应该是:6点10分啊?
用一个哈希表保持任务呵呵
让线程睡一个小时呵呵
thread.sleep();
你还可以interraput sleep呵呵
呵呵结合图形界面可以设置sleep时间.....
多号呀
http://my.6cncn.cn