Если у меня есть класс, содержащий приватный булевский метод, созданный с помощью метода setter и getter , мне нужно будет установить эти методы как синхронизированные, если я хочу читать и писать в , что булево из разных потоки?Доступ к булевому в многопоточной среде
ответ
Да, создание сеттеров и приемников синхронизировано - хорошая идея. Чтение или запись логического значения не является атомной командой, поэтому в редких случаях это может вызвать некоторые проблемы. (вы не можете быть уверены, что вы читаете форму RAM или cashe). Если это не изменчиво.
+1 для «Чтение или запись логического значения не является атомарным». Но это верно даже для летучих, поскольку простые назначения могут приводить к нескольким инструкциям JVM и к тому уровню, на котором должна учитываться синхронизация. – sgp15
Синхронизация доступа простого значения часто не требуется. Как правило, все, что вам нужно, это отметить его volatile
, который является менее ограничительным и более информативным.
Все это действительно сильно зависит от того, как вы получаете доступ к значению.
В некоторых случаях использование AtomicBoolean
может быть наилучшим подходом. Это дает несколько иные гарантии для volatile
.
См. Вопрос Java: volatile boolean vs AtomicBoolean вопрос для получения более подробной информации.
Рассмотрение классов в java/util/concurrent/atomic
может быть вам полезна. Например, AtomicBoolean
.
- 1. Доступ к .NET-словарю в многопоточной среде
- 2. Доступ к большому одиночному объекту в многопоточной среде
- 3. Деструктор в многопоточной среде?
- 4. Shiro в многопоточной среде
- 5. Использование HashMap в многопоточной среде
- 6. zerorpc в многопоточной среде?
- 7. rockdb в многопоточной среде
- 8. Куча в многопоточной среде
- 9. BufferedReader в многопоточной среде
- 10. Singleton в многопоточной среде
- 11. Создание UID в многопоточной и многопоточной среде
- 12. Инициализация EntityManagerFactory в многопоточной среде
- 13. Код последовательности в многопоточной среде
- 14. Эти указатели в многопоточной среде
- 15. Повышение активности в многопоточной среде
- 16. Использование TraceSource в многопоточной среде
- 17. Как статическая работа в многопоточной среде?
- 18. Перехват Ninject в многопоточной среде
- 19. Функция mkdirs() в многопоточной среде
- 20. Обновления Singleton в многопоточной среде
- 21. время выполнения в многопоточной среде
- 22. Блокировка документов в многопоточной среде
- 23. Jain SIP в многопоточной среде
- 24. улавливающие сигналы в многопоточной среде
- 25. Переменные переменных в многопоточной среде
- 26. Android ResultReceiver в многопоточной среде
- 27. Hashmaps, используемые в многопоточной среде
- 28. Необходимость id_callback в многопоточной среде?
- 29. Использование sqlite в многопоточной среде
- 30. пружинный автомат в многопоточной среде
У вас есть? Нет. Но вы можете этого захотеть. В этом случае синхронизация геттера и сеттера может быть недостаточной для защиты вас, в зависимости от того, к каким другим данным обращаются оба потока. Вам действительно нужно дать нам намного больше информации о том, что каждый поток делает, чтобы хорошо ответить. –