جاوا ۾ ConcurrentModificationException ڇا آهي؟
مثال
اچو ته هڪ مثال ڏسو ته هي استثنا ڪيئن ٿئي ٿو.import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
//Test driver for ConcurrentModificationException
public class ConcurrentModificationExceptionTestDriver1 {
public static void main(String[] args) {
List<String> businessDays = new ArrayList<>();
businessDays.add("Monday");
businessDays.add("Tuesday");
businessDays.add("Wednesday");
businessDays.add("Thursday");
businessDays.add("Friday");
businessDays.add("Saturday");
businessDays.add("Sunday");
Iterator<String> iterator = businessDays.iterator();
while (iterator.hasNext()) {
String day = iterator.next();
if (day.equals("Sunday")) {
// removing a list item while iterating
// leading to java.util.ConcurrentModificationException
businessDays.remove(day);
}
}
}
}
پيداوار
"main" سلسلي ۾ استثنا java.util.ConcurrentModificationException java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1042) تي java.base/java.util.ArrayList$Itr.next. :996) at milestone.thirty.seven.ConcurrentModificationExceptionTestDriver1.main(ConcurrentModificationExceptionTestDriver1.java:22)
جاوا ۾ ConcurrentModificationException کان ڪيئن بچجي؟
ConcurrentModificationException لاءِ مختلف حل آهن . هتي ڪجھ فهرست ڏنل آهن. توهان پنهنجي ضرورتن مطابق ڪنهن کي به چونڊي سگهو ٿا.- ترميم ڪرڻ کان پاسو ڪريو جڏهن ٻيهر ورجائي.
- استعمال ڪريو روايتي لوپ گڏ ڪرڻ ۽ ترميم لاءِ.
- تبديل ڪرڻ لاءِ قدرن جي ڪاپي ٺاھيو جڏھن اُن کي استعمال ڪيو وڃي. ورجائي ختم ٿيڻ کان پوءِ قدرن کي تازه ڪاري ڪريو.
مثال
هتي هڪ مثال آهي ته توهان ConcurrentModificationException کان ڪيئن بچي سگهو ٿا .import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//Test driver for ConcurrentModificationException
public class ConcurrentModificationExceptionTestDriver2 {
public static void main(String[] args) {
List<String> businessDays = new ArrayList<>();
businessDays.add("Monday");
businessDays.add("Tuesday");
businessDays.add("Wednesday");
businessDays.add("Thursday");
businessDays.add("Friday");
businessDays.add("Saturday");
businessDays.add("Sunday");
System.out.println("Initial Business Days: " + businessDays);
// Method II - Using traditional for loop
for (int i = 0; i < businessDays.size(); i++) {
if (businessDays.get(i).equals("Sunday")) {
businessDays.remove(i);
}
}
Iterator<String> iterator = businessDays.iterator();
List<String> businessDaysToBeRemoved = new ArrayList<>();
// Method III - Creating a copy of elements
while (iterator.hasNext()) {
String day = iterator.next();
if (day.equals("Saturday")) {
// Add values to be removed in the list
businessDaysToBeRemoved.add(day);
}
}
businessDays.removeAll(businessDaysToBeRemoved);
System.out.println("Final Business Days: " + businessDays);
}
}
پيداوار
شروعاتي ڪاروباري ڏينهن: [سومر، اڱارو، اربع، خميس، جمعو، ڇنڇر، آچر] آخري ڪاروباري ڏينهن: [سومر، اڱارو، اربع، خميس، جمعو]
GO TO FULL VERSION