我正在尝试创建一个程序来执行一个简单的任务,并每秒产生一个输出x.我还希望程序运行,直到我决定手动关闭程序.
我一直在尝试使用Swing计时器来实现它,因为我认为这是最好的方法.问题是我不确定一旦主方法执行完毕后如何保持程序运行.所以我举例说:
static ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
//do stuff
} catch (Exception e) {
e.printStackTrace();
}
}
};
public static void main(String[] args) throws Exception{
Timer timer = new Timer(3000, taskPerformer);
timer.start();
}
Run Code Online (Sandbox Code Playgroud)
刚刚完成执行.我可以通过将当前执行线程置于睡眠状态来避免这个问题Thread.currentThread().sleep(..),但这感觉就像一个拙劣的工作,并且最终将持续有限.我也可以做(真的),但我相信这是不好的做法.
我的问题是如何获得所需的持久性行为,以及是否有比使用Swing计时器更好的方法.
谢谢.
只要EDT处于活动状态,Swing Timer就会保持活动状态,通常这是通过让Swing GUI存在并且可见(这会创建一个非守护程序线程,直到GUI退出).如果您不需要Swing GUI,则不要使用Swing Timer.也许改为使用java.util.Timer,并且不要退出main方法直到你给出这个词(但是你打算这样做).
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |