使用计时器启动SwingWorker?
|
我需要执行的任务包括从外部服务器请求一些数据,对数据执行一些(相当长的)处理,然后使用处理结果更新GUI。因为服务器可能没有响应,所以该任务非常适合SwingWorker:
doInBackground()
方法获取结果,然后done方法更新GUI。
我需要每隔几秒钟发生一次。我知道我可以只使用while循环和Thread.sleep,并在每次睡眠后创建一个新的SwingWorker。但是我读过的所有文章都对使用循环和睡眠不满意。我想使用计时器,但:
使用摆动计时器似乎适得其反;由于它们在EDT上运行,因此我基本上没有理由使用SwingWorker的doInBackground方法。如果服务器没有响应,则GUI将无响应。
使用java.util.Timer似乎有点浪费:它似乎为TimerTask()创建了一个后台线程,由于我只是创建一个SwingWorker来完成实际工作,因此我实质上是在创建一个后台线程,该线程用于创建另一个后台线程。
谁能告诉我什么是最佳解决方案?我想坚持使用SwingWorker,因为它似乎非常适合该任务,但是如果可以的话,我想避免使用while循环。
谢谢
没有找到相关结果
已邀请:
4 个回复
购藏盗码韦
信藉乒
哭木算
珊畴炮贩号