Можно ли с уверенностью сказать, что объект является потокобезопасным в Java, если его класс не содержит переменных экземпляра, которые могут быть изменены, и нет статических переменных?Можно ли назвать объект потокобезопасным или нет?
ответ
Полностью безопасный, если он не распространяется на класс, не подверженный потоку.
Если объект без гражданства, он может безопасно делиться несколькими потоками.
Именно поэтому рекомендуется использовать неизменяемые объекты в многопоточной среде, поскольку их состояние не может быть одновременно изменено.
Да, но тот факт, что класс объекта не содержит полей экземпляра переменной, это не означает, что объект не имеет состояния. Вам понадобятся суперклассы, чтобы это проверить. – Joffrey
Привет, Жан, Спасибо за ваш ответ! Итак, если кто-то спрашивает, скажем, объект является потокобезопасным или нет? то можно посмотреть на его класс и дать ответ, просто взглянув на состояние. Плс исправить меня, если я ошибаюсь! – Prasad
@Prasad вам также придется посмотреть на свои суперклассы. Тогда, если они тоже без гражданства, вы можете сказать, что это безопасно. ** Однако **, наличие состояния не означает, что он не является потокобезопасным, вам придется исследовать более того, что касается доступа к полям. – Joffrey
- 1. Является ли python logger потокобезопасным или нет?
- 2. можно ли назвать значение Appconfig как объект?
- 3. Является ли объект Reactor потокобезопасным?
- 4. Можно ли назвать QThread?
- 5. Является ли это использование словаря потокобезопасным или нет?
- 6. Это сделает объект потокобезопасным?
- 7. Можно ли потоком назвать поток?
- 8. Можно ли это назвать инкапсуляцией?
- 9. Можно ли назвать пакет или класс «основным» в java?
- 10. Является ли PHP потокобезопасным?
- 11. Можно ли назвать эту строку «String» опасной или плохой практикой?
- 12. Можно ли назвать [super loadView]?
- 13. Можно ли назвать анонимную функцию?
- 14. Можно ли это назвать рекурсивным?
- 15. Можно ли назвать предупреждение AspectJ?
- 16. Можно ли назвать такую переменную?
- 17. Можно ли полиморфизм Runtime назвать Inversion Of Control или иначе
- 18. Является ли объект SyncRoot действительно потокобезопасным?
- 19. Является ли объект StructureMap Container потокобезопасным?
- 20. Scala- Как определить, является ли объект потокобезопасным?
- 21. Как проверить, выделен ли объект или нет?
- 22. Является ли NashornScriptEngine потокобезопасным?
- 23. Является ли HashBiMap потокобезопасным?
- 24. Можно ли назвать Marshall.ReleaseComObject в финализаторе?
- 25. Можно ли назвать String классом-оболочкой?
- 26. Можно ли удалить или создать объект @ReadOnly?
- 27. Является ли RequestContextHolder потокобезопасным?
- 28. Можно ли назвать это инъекцией зависимостей?
- 29. iphone - проверить, можно ли позвонить или нет
- 30. Является ли XMLInputFactory потокобезопасным?
Да, это безопасно! – Avia
Это безопасно ... если он не расширяет класс, который нет! – Seelenvirtuose
Да, такой объект был бы потокобезопасным. Но, конечно, класс может иметь переменные экземпляра и иметь статические переменные и * ALSO * быть потокобезопасными. Ключевой вопрос: «Как управляется состояние объекта?» Посмотрите здесь: [Что подразумевается под потокобезопасным кодом?] (Http://stackoverflow.com/questions/261683/what-is-meant-by-thread-safe-code) – FoggyDay