方法一:
使用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();
}
}