我有这样的代码:
final SwingWorker worker = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {...};
}
Timer timer=new Timer(10000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
worker.execute();
}
});
timer.start();
有时 worker 过程需要10秒以上,但有时需要3-4秒,因此如何设置计时器以等待 worker <的完全执行/ strong>?有什么建议吗?
答案 0 :(得分:4)
请参阅SwingWorker
类的javadoc:
在工作线程上调用doInBackground方法之前,SwingWorker会将状态属性更改通知给StateCalue.STARTED。 doInBackground方法完成后,执行done方法。然后,SwingWorker会将状态属性更改通知给StateCalue.DONE。
因此,SwingWorker
完成时会触发事件。附上一个监听器并在正确的事件上重新激活Timer
。