方法一:
使用Timer和TimerTask
package za;
import java.util.Timer;
import java.util.TimerTask;
class Task extends TimerTask
{
public void run()
{
System.out.println("You are my sunshine!");
}
}
public class Mytime{
public static void main(String[] args)
{
Timer timer=new Timer();
Task task=new Task();
timer.schedule(task, 1000,2000); //执行任务前延时1000ms,执行后每隔2000ms执行一次
}
}方法二:
使用匿名内部类,对方法一进行改进
package za;
import java.util.Timer;
import java.util.TimerTask;
public class Mytime{
public static void main(String[] args)
{
Timer timer=new Timer();
timer.schedule(new TimerTask()
{
public void run()
{
System.out.println("You are my sunshine!");
}
}, 1000,2000); //执行任务前延时1000ms,执行后每隔2000ms执行一次
}
}
方法3:
package za;
import java.awt.event.*;
import javax.swing.*;
public class TimerTest{
// private static final long serialVersionUID = 1L;
public TimerTest()
{
// this.setSize(500, 500);
// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// this.setVisible(true);
ActionListener taskPerformer=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("You are my sunshine!");
}
};
Timer timer=new Timer(200, taskPerformer);
timer.start();
}
public static void main(String[] args)
{
new TimerTest();
}
}以上代码运行后没有输出结果,原因是javax.swing.Timer只能用在GUI程序中才能起作用。注意方法1和方法2使用的是java.util.Timer类。修改以上代码如下:
package za;
import java.awt.event.*;
import javax.swing.*;
public class TimerTest extends JFrame{
private static final long serialVersionUID = 1L;
public TimerTest()
{
// this.setSize(500, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// this.setVisible(true);
ActionListener taskPerformer=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("You are my sunshine!");
}
};
Timer timer=new Timer(200, taskPerformer);
timer.start();
}
public static void main(String[] args)
{
new TimerTest();
}
}
本文详细介绍了如何使用Java的Timer和TimerTask类来实现定时任务,包括使用Timer类和匿名内部类的方法,以及在GUI程序中使用javax.swing.Timer。同时指出了使用javax.swing.Timer的限制,并提供了相应的解决方案。
2362

被折叠的 条评论
为什么被折叠?



