Java Gurus,ConcurrentHashMap vs ReentrantReadWriteLock Bản đồ tùy chỉnh dựa cho Reloading
Hiện nay chúng tôi có một HashMap<String,SomeApplicationObject>
mà đang được đọc thường xuyên và sửa đổi thường xuyên và chúng tôi đang gặp vấn đề rằng trong/tải lại, đọc lợi nhuận hoạt động sửa đổi null
không được chấp nhận.
Để sửa lỗi này tôi có các tùy chọn sau đây:
A. Sử dụng ConcurrentHashMap
nào trông giống như lựa chọn đầu tiên nhưng các hoạt động mà chúng ta đang nói về là reload()
- có nghĩa là clear()
Tiếp theo replaceAll()
. Vì vậy, nếu các Map
được đọc bài clear()
và trước replaceAll()
nó trả về null mà không phải là mong muốn. Ngay cả khi tôi synchronize
điều này không giải quyết được vấn đề.
B. Tạo một thực hiện dựa trên ReentrantReadWriteLock
đâu tôi sẽ tạo ra Acquire Write Lock
trước reload()
hoạt động. Điều này có vẻ phù hợp hơn nhưng tôi cảm thấy phải có một cái gì đó đã có sẵn cho điều này và tôi không cần phải tái tạo lại bánh xe.
Cách tốt nhất là gì?
EDIT Có bất kỳ Bộ sưu tập nào đã có sẵn với tính năng này không?
Bản đồ của bạn có hiệu quả bất biến, làm cho chúng trở thành mục tiêu hoàn hảo để xuất bản qua 'biến động '. –
** Không thay đổi có hiệu quả ** xin lỗi tôi không hiểu 'không thể thay đổi' mà tốt ... Bạn có thể vui lòng cung cấp một số gợi ý ??? – SiB