Я просто пытаюсь исследовать Что такое ThreadSafe?Является ли итератором KeySet ConcurrentHashMap потокобезопасным?
Ниже мое понимание:
Похоже, для меня; позволяя нескольким потокам получать доступ к коллекции одновременно; это независимо от его синхронизации. Например, любой метод без синхронизированного ключевого слова на нем; является потокобезопасным, означает, что к нему могут обращаться несколько потоков.
Для обеспечения целостности данных в то время, когда к ним обращаются несколько потоков, зависит от выбора разработчика, чтобы поддерживать еще одну логику (синхронизацию). Это отдельно от потокобезопасности.
Если мое заявление выше false; просто прочитать ниже JAVA DOC для `ConcurrentHashMap:
Keyset: итератор мнение, является«слабо согласуется»итератор, который никогда не бросит ConcurrentModificationException и гарантии для обхода элементов, как они существовали на строительство итератора, и может (но не гарантируется) отражать любые изменения после строительства.
В приведенном выше заявлении говорится, что итератор keySet не гарантирует целостность данных; в то время как многопоточность изменяет коллекцию.
Не могли бы вы ответить на меня, * Является ли итератором KeySet ConcurrentHashMap потоковым?
И мое понимание по потоку безопасно правильно?
ваш вопрос сам ответ. – Batty
Поскольку javadoc идет, это невероятно ясно, и никакой ответ не может перефразировать его лучше или с большей ясностью. Что именно вы не понимаете? – Bohemian
ConcurrentHashMap keySet() является потокобезопасным, поэтому нет необходимости синхронизировать или брать копию. –