在实际开发中,我们发现有一些任务需要周期性的完成,比如说数据库的检查、设备的检查、状态的检查、变量的检查等等。这个时候就会使用到定时器。在java swing中,因为本身已经集成了定时器,所以直接使用即可。
需要注意的是,定时器的回调函数中,对相关变量的访问和改写有可能与控件中的回调函数有冲突。这个时候,就需要做好数据的互斥保护工作。
1、准备测试代码
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class process{
public static int cnt = 0;
public static void main(String[] args) throws InterruptedException
{
Timer timer = new Timer(1000 ,new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println("cnt = " + cnt);
cnt += 1;
}
});
timer.setRepeats(true);
timer.start();
Thread.sleep(5000);
timer.stop();
}
}
2、代码分析
代码主要来自于https://www.delftstack.com/zh/howto/java/swing-timer-in-java/这个地址,略作修改,在此表示感谢。代码中定义了一个变量timer,回调函数就是ActionListener中actionPerformed函数。timer设置为可重复式出发、开始、主线程睡眠、结束。
3、编译、执行
代码没有问题的话,执行后你会看到这样的结果,
C:\Users\feixiaoxing\Desktop\java_jni>javac process.java && java process标签:cnt,定时器,java,timer,上位,import,public From: https://blog.51cto.com/feixiaoxing/5881313
cnt = 0
cnt = 1
cnt = 2
cnt = 3