ConcurrentModificationException notiek, kad objektu mēģina vienlaikus modificēt, kad tas nav pieļaujams. Šis izņēmums parasti rodas, strādājot ar Java Collection klasēm. Piemēram, pavedienam nav atļauts modificēt kolekciju, kad pa to atkārtojas kāds cits pavediens.
Kā labot vienlaicīgu modifikāciju izņēmumu?
Mēs varam arī izvairīties no vienlaicīgas modifikācijas izņēmuma vienā vītņotā vidē. Mēs varam izmantot Iteratora noņemšanas metodi, lai noņemtu objektu no pamatā esošā kolekcijas objekta. Taču šajā gadījumā no saraksta varat noņemt tikai to pašu objektu, nevis nevienu citu objektu.
Kā novērst vienlaicīgu modifikāciju izņēmumu kartē?
izmantojiet ConcurrentHashMap. turpiniet izmantot vienkāršu HashMap, taču izveidojiet jaunu karti katrai modifikācijai un pārslēdziet kartes aiz ainas (sinhronizējot slēdža darbību vai izmantojot AtomicReference)
Kura iteratora metode rada vienlaicīgu modifikāciju izņēmumu?
Ja mēs izsaucam metožu secību objektam, kas pārkāpj tā līgumu, objekts izmet ConcurrentModificationException. Piemēram: ja, atkārtojot kolekciju, mēs tieši cenšamies modificēt šo kolekciju, tad dotais fail-fast iterator izliks šo ConcurrentModificationException.
Kas ir Java steka pārpildes vienlaicīgās modifikācijas izņēmums?
Ja viens pavediens izdod metožu izsaukšanas secību, kas pārkāpj objekta līgumu, objekts var izmantot šo izņēmumu. Piemēram, ja pavediens tieši modificē kolekciju, kamēr tas atkārtojas pa kolekciju ar ātro atteices iteratoru, iterators izmantos šo izņēmumu.