Я хочу сохранить объект (модель/данные моей игры) на диск, но по мере того, как игра может стать довольно большой - достаточно большой, чтобы взять несколько тиков игры для хранения - думая, что имеет смысл выполнять сохранение в отдельном потоке, чтобы поддерживать игру относительно плавно.Создание нового потока для сохранения объекта в файл
Каков наилучший способ достижения этого? Я не был уверен, имеет ли смысл сделать GameState (модель) runnable или расширение Thread, потому что большую часть времени он не предназначен для Runnable - логически, то это не должно быть Runnable?
Другие возможности, на которые я смотрел, - это класс Runnable GameSaver, которому я передаю GameState или копию GameState. Предположительно, однако, это вызовет проблемы с синхронизацией, если я передам GameState или замедлит игру, пока класс клонируется.
Каков наилучший подход, или подходы «за» и «против»? Любые другие альтернативы тоже оценили - я сомневаюсь, что мой поиск был исчерпывающим.
Вы должны решить синхронизации, независимо от решения вы выбираете. – biziclop
Я не вижу, как вы можете безопасно писать состояние, не делая моментального снимка. –
@Martin James Это зависит от того, как организовано ваше государство. Если, например, вы храните события с меткой времени, вам это не нужно. (Думайте об игре в шахматы.) – biziclop