ConcurrentModificationException объект уруксат берилбеген учурда бир убакта өзгөртүүгө аракет кылынганда пайда болот. Бул өзгөчөлүк, адатта, Java Collection класстары менен иштегенде келип чыгат. Мисалы - Жыйнактын үстүндө башка жип итерацияланып жатканда жиптин аны өзгөртүүсүнө жол берилбейт.
Бир убактагы өзгөртүү өзгөчөлүгүн кантип оңдойм?
Биз ошондой эле бир жиптүү чөйрөдө Биргелешкен Өзгөртүү өзгөчөлүгүнөн кача алабыз. Объектти астындагы коллекция объектисинен алып салуу үчүн Итератордун алып салуу ыкмасын колдоно алабыз. Бирок бул учурда тизмеден башка объектти эмес, бир эле объектти алып салсаңыз болот.
Картада бир убактагы өзгөртүүлөрдөн кантип сактанасыз?
колдонуу ConcurrentHashMap. жөнөкөй HashMap колдонууну улантыңыз, бирок ар бир модификация боюнча жаңы карта түзүңүз жана көшөгө артындагы карталарды которуңуз (которуу операциясын синхрондоштуруу же AtomicReference аркылуу)
Итератордун кайсы ыкмасы бир убактагы өзгөртүүдөн өзгөчөлүктү жаратат?
Эгерде анын келишимин бузган объектте ыкмалардын ырааттуулугун чакырсак, анда объект ConcurrentModificationException ыргытат. Мисалы: коллекцияны итерациялоодо, биз түздөн-түз ошол коллекцияны өзгөртүүгө аракет кылсак, анда берилген тез иштебей турган итератор бул ConcurrentModificationExceptionти ыргытат.
Java стекинин толуп кетишинде бир убактагы өзгөртүү өзгөчөлүгү кандай?
Эгер бир жип объекттин келишимин бузган ыкма чакырууларынын ырааттуулугун чыгарса, объект бул өзгөчөлүктү чыгарышы мүмкүн. Мисалы, эгер жип коллекцияны тез итератор менен итерациялап жатканда коллекцияны түз өзгөртсө, итератор бул өзгөчөлүктү жаратат.