ConcurrentModificationException xảy ra khimột đối tượng được cố gắng sửa đổi đồng thời khi nó không được phép. Ngoại lệ này thường xảy ra khi một người đang làm việc với các lớp Bộ sưu tập Java. Ví dụ - Một chuỗi không được phép sửa đổi Bộ sưu tập khi một số chuỗi khác đang lặp lại nó.
Làm cách nào để khắc phục ngoại lệ sửa đổi đồng thời?
Chúng ta cũng có thể tránh Ngoại lệ Sửa đổi Đồng thời trong một môi trường luồng đơn. Chúng ta có thể sử dụngphương thức loại bỏ của Iteratorđể loại bỏ đối tượng khỏi đối tượng tập hợp bên dưới. Nhưng trong trường hợp này, bạn chỉ có thể xóa cùng một đối tượng chứ không phải bất kỳ đối tượng nào khác khỏi danh sách.
Bạn làm cách nào để ngăn ngoại lệ sửa đổi đồng thời trên bản đồ?
sử dụngConcurrentHashMap. tiếp tục sử dụng HashMap đơn giản, nhưng xây dựng một bản đồ mới trên mỗi lần sửa đổi và chuyển đổi bản đồ ở hậu trường (đồng bộ hóa thao tác chuyển đổi hoặc sử dụng AtomicReference)
Phương thức nào của trình lặp đưa ra ngoại lệ sửa đổi đồng thời?
Nếu chúng ta gọi một chuỗi các phương thức trên một đối tượng vi phạm hợp đồng của nó, thì đối tượng sẽ ném ConcurrentModificationException. Ví dụ: nếu trong khi lặp qua tập hợp, chúng tôi trực tiếp cố gắng sửa đổi tập hợp đó, thì trình lặpfail-fastđã cho sẽ ném ra ConcurrentModificationException này.
Ngoại lệ sửa đổi đồng thời trong tràn ngăn xếp Java là gì?
Nếu một luồng đơn lẻ đưa ra một chuỗi các lệnh gọi phương thức vi phạm hợp đồng của một đối tượng, thì đối tượngcó thểném ra ngoại lệ này. Ví dụ: nếu một luồng sửa đổi trực tiếp một bộ sưu tập trong khi nó đang lặp lại bộ sưu tập bằng một trình lặp không nhanh, thì trình lặp sẽ đưa ra ngoại lệ này.