java 中 如何使用Timer?

我想让程序10分钟后输出一个打印语句,我是这样做的:Timertimer=newTimer();timer.schedule(newTask(),60000);}}sta... 我想让程序10分钟后输出一个打印语句,我是这样做的:
Timer timer = new Timer();
timer.schedule(new Task(), 60000);
}
}
static class Task extends TimerTask{
public void run(){
System.out.println("1234567");
}
}
会报错啊 高手们帮忙解决一下!为什么不可以下边的类不可以是 static类型的,去掉static 又会timer.schedule(new Task(), 60000);这句又会抛java.lang.IllegalArgumentException为什么啊 ?在线等答案!
展开
 我来答
物理公司的
推荐于2017-10-02 · TA获得超过5697个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1388万
展开全部
现在项目中用到需要定时去检查文件是否更新的功能。timer正好用于此处。
用法很简单,new一个timer,然后写一个timertask的子类即可。
package comz.autoupdatefile;

import java.util.Timer;
import java.util.TimerTask;

public class M {
public static void main(String[] args) {
// TODO todo.generated by zoer
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);
}
}

class MyTask extends TimerTask {

@Override
public void run() {
System.out.println("dddd");

}

}
这样,就可以在1秒钟之后开始执行mytask,每两秒钟执行一次。
当然,timer的功能也可以通过自己构造线程,然后在线程中用sleep来模拟停止一段时间,然后再执行某个动作。
其实,看一下timertask的源码就立即可以知道,timertask就是实现了runnable接口的。也就是说,通过timer来间隔一段时间执行一个操作,也是通过一个线程来做到的。
祝福_文言文
推荐于2017-09-22 · TA获得超过198个赞
知道答主
回答量:44
采纳率:0%
帮助的人:83.3万
展开全部
第一楼主Task定义成一个类的话 需要加class吧
第二楼主想10分钟之后 应该10 * 60 * 1000 ms 也就是应该
timer.schedule(new Task(), 600000);少了一个零

完整的来说:
import java.util.Timer;
import java.util.TimerTask;

public class test {
public static void main(String args[]) {
Timer timer = new Timer();
timer.schedule(new Task(), 600000);
}

static class Task extends TimerTask {
public void run() {
System.out.println("1234567");
}
}
}
更多追问追答
追问
谢谢 是我输入失误了 我程序中是没有少class ,下边的类我不能用static的 不知道为什么 会不会是我上边的类有继承和实现接口有关系  我把static去掉后timer.schedule()那句又会抛java.lang.IllegalArgumentException 这是什么异常 帮我看看 热心人 !
追答
能不能把你的代码贴出来?这样我好看一些
如果不能用static的话 你可以不把Task定义成内部类啊
单独写个Task的类 就可以直接调用了
或者这样不知道满足你要求不:

import java.util.Timer;
import java.util.TimerTask;

public class test {
public test() {
Timer timer = new Timer();
timer.schedule(new Task(), 600000);
}

public static void main(String args[]) {
new test();
}

class Task extends TimerTask {
public void run() {
System.out.println("1234567");
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8c8c4ec
2011-05-28 · TA获得超过141个赞
知道小有建树答主
回答量:157
采纳率:100%
帮助的人:163万
展开全部
java api 里面的详细解释:
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。
在固定延迟执行中,根据前一次执行的实际执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。从长期来看,执行的频率一般要稍慢于指定周期的倒数(假定 Object.wait(long) 所依靠的系统时钟是准确的)。

固定延迟执行适用于那些需要“平稳”运行的重复活动。换句话说,它适用于在短期运行中保持频率准确要比在长期运行中更为重要的活动。这包括大多数动画任务,如以固定时间间隔闪烁的光标。这还包括为响应人类活动所执行的固定活动,如在按住键时自动重复输入字符。

参数:
task - 所要安排的任务。
delay - 执行任务前的延迟时间,单位是毫秒。
period - 执行各后续任务之间的时间间隔,单位是毫秒。

还有安装你的意思你好像只需要在10秒后执行一次就好了,但是就不应该用t.schedule(task, delay, period),应该用的是t.schedule(task, delay,),你用的那个是会重复执行的,间隔为period毫秒;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式