2011-05-28 20 views
1

我打算使用Java SwingWorker作为单例来定期在后台备份应用程序数据(可能与Swing定时器或java.util.Timer结合使用)
是这样一个策略的声音?将Singleton应用于SwingWorker是一个好主意?使用Java Swing worker作为单例在后台备份应用程序数据

+1

确保定期备份应用程序数据是您的想法正确,这样您可以将GUI应用程序的逻辑从GUI分派到后台任务,以避免在最困难和最长期的任务中冻结您的GUI,因为您的想法有其他选项通过使用java.util.Timer – mKorbel 2011-05-28 14:45:51

回答

2

我不明白SwingWorker与备份任务有什么关系。我看不出单身模式与什么有关。这是Timer的任务。但是,您可能必须小心,不要在多个线程中启动它,但是应该可行,而不必将其作为单例包装。

+0

我使用SwingWorker是因为它处理读取gui状态,我还计划执行恢复操作,它肯定会操作gui状态,因此我应该如何确切地使用SwingWorker进行恢复? – user678070 2011-05-28 14:08:53

+0

查看@Boro的答案。 – toto2 2011-05-28 15:29:58

2

我想你可以很容易地使用SwingWorker来保存模型的状态。如果您想在后台执行此任务,最好是制作状态的当前副本并保存副本,因此您不必担心在将模型保存在另一个线程中时同步模型的状态。

在恢复过程中,您可能希望确保用户不会在之前版本的模型恢复过程中完成所有操作,并且稍后将恢复原状。至于成功的恢复,你可能会设置当前状态。因此,在这种情况下,甚至可以阻止任何用户输入,因此您可以轻松地在当前线程上执行此操作。首先向用户显示一些适当的信息/对话框,表示状态正在恢复。

相关问题