Предположим, что у меня 4 объекта, A, B, C и D.Java синхронизации дилемма
- Все методы на A синхронизированы.
- Никакие методы на B, C и D не синхронизированы.
- Б доступ только A
- С доступом оба A и B
- D является accesed только B
Метода на А может быть вызвана из разных потоков одновременно. Является ли данный сценарий потокобезопасным? То есть все считывают и записывают в B, C и D, видимые для всех потоков?
Заранее благодарен!
Спасибо большое! По сути, у меня есть пользовательский интерфейс, который работает в своем потоке и вызывает контроллер, который синхронизирован. Контроллер представляет собой игровой цикл игрового движка, поэтому он создает отдельный поток, который вызывает синхронный метод handleTick контроллера через некоторое время. Проблема заключалась в том, что игры с сохранением/загрузкой осуществляли доступ к игровым данным через контроллер из потока пользовательского интерфейса, а не к потоку игрового цикла. Поскольку только один поток работает сразу с игровыми данными, я не был уверен, что все в порядке. Еще раз, большое спасибо! –
Да, если все состояние игры «принадлежит» и доступно исключительно через контроллер, вам нужно только синхронизировать контроллер. – Thilo