Tôi là tình huống sau.Làm thế nào để sử dụng ReadWriteLock?
Khi khởi động ứng dụng web, tôi cần tải Bản đồ sau đó được sử dụng bởi nhiều chủ đề đến. Đó là, các yêu cầu đến và Bản đồ được sử dụng để tìm hiểu xem nó có chứa một khóa cụ thể hay không và nếu như vậy giá trị (đối tượng) được lấy ra và liên kết với một đối tượng khác.
Hiện tại, nội dung của Bản đồ thay đổi. Tôi không muốn khởi động lại ứng dụng của mình để tải lại tình huống mới. Thay vào đó tôi muốn làm điều này một cách năng động.
Tuy nhiên, tại thời điểm Bản đồ đang tải lại (xóa tất cả các mục và thay thế chúng bằng bản đồ mới), các yêu cầu đọc đồng thời trên Bản đồ đó vẫn đến.
Tôi nên làm gì để ngăn tất cả các chủ đề đọc truy cập vào Bản đồ đó trong khi nó đang được tải lại? Làm thế nào tôi có thể làm điều này một cách hiệu quả nhất, bởi vì tôi chỉ cần điều này khi bản đồ được tải lại mà sẽ chỉ xảy ra rải rác (mỗi x tuần một lần)?
Nếu ở trên không phải là một tùy chọn (chặn) làm cách nào để đảm bảo rằng trong khi tải lại yêu cầu đọc của tôi sẽ không bị ngoại lệ không mong muốn (vì khóa không còn ở đó nữa hoặc giá trị không còn tồn tại hoặc bị tải lại)?
Tôi được đưa ra lời khuyên rằng một ReadWriteLock có thể giúp tôi. Bạn có thể cung cấp cho tôi một ví dụ về cách tôi nên sử dụng ReadWriteLock này với độc giả và nhà văn của tôi không?
Cảm ơn,
E
Điều này sẽ được chấp nhận trong điều kiện bạn không phải kiểm tra thứ gì đó trên bản đồ trước khi cập nhật là một hoạt động kiểm tra sau đó sửa đổi và do đó không phải là nguyên tử. – Adam