Я думаю, вы могли бы легко использовать SwingWorker
для сохранения состояния вашей модели.Если вы хотите выполнить эту задачу в фоновом режиме, желательно сделать текущую копию вашего состояния и сохранить ее, поэтому вам не нужно беспокоиться о синхронизации состояния модели, пока вы сохраняете ее в другом потоке.
В том, что касается восстановления, вы, вероятно, захотите убедиться, что пользователь не сделает, а затем потеряет все, что он сделал во время восстановления модели из предыдущей версии.Что касается успешного восстановления, вы, вероятно, установите текущее состояние.Таким образом, в этом случае даже целесообразно заблокировать любой пользовательский ввод, поэтому вы можете легко сделать это в текущем потоке.Во-первых, для пользователя отображается некоторая соответствующая информация / диалог о том, что состояние восстанавливается.