有没有办法创建一个循环,可以每3秒执行一次任务而不使用睡眠功能
例如:
try {
while (true) {
System.out.println(new Date());
Thread.sleep(5 * 1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但是使用睡眠功能时的问题是,它只是冻结了程序.
这个循环的主要思想是与mysql数据库(在线)进行同步.
使用 java.util.TimerTask
java.util.Timer t = new java.util.Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("This will run every 5 seconds");
}
}, 5000, 5000);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是GUI,则可以使用以下javax.swing.Timer示例:
int delay = 5000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println("This will run every 5 seconds");
}
};
new javax.swing.Timer(delay, taskPerformer).start();
Run Code Online (Sandbox Code Playgroud)
约之间的差别的一些信息java.util.Timer和java.swing.Timer:
http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html
它和javax.swing.Timer都提供相同的基本功能,但java.util.Timer更通用,并且具有更多功能.javax.swing.Timer有两个功能,可以使它更容易使用GUI.首先,它的事件处理隐喻对于GUI程序员来说是熟悉的,并且可以使事件调度线程的处理更简单一些.其次,它的自动线程共享意味着您不必采取特殊步骤来避免产生太多线程.相反,您的计时器使用相同的线程来使光标闪烁,出现工具提示,等等.
| 归档时间: |
|
| 查看次数: |
6708 次 |
| 最近记录: |