Tôi cần một số Map
(hoặc bất kỳ bộ sưu tập nào) hỗ trợ thời gian không sử dụng cho các mục nhập và tự động xóa chúng.Bản đồ với các yếu tố tự động hết hạn
Tôi biết có ổi MapMaker
, nhưng nó hết hạn các yếu tố của nó trên các hoạt động đọc/ghi tiếp theo thay vì tự động, bởi một chuỗi đang chạy. Ngoài ra, khả năng hết hạn của MapMaker
hiện được chuyển đến CacheBuilder
. Vấn đề là, tôi không muốn bộ nhớ cache - Tôi muốn các yếu tố hết hạn
Có điều gì đó sẵn sàng để sử dụng không? (nó không khó để thực hiện nó bản thân mình, nhưng nó là tốt hơn để tái sử dụng một cái gì đó)
Bạn có cần những yếu tố nào đó một cách rõ ràng "chết" (ví dụ bằng cách gọi một số phương pháp) đúng thời hạn? Nếu bạn chỉ cần vứt bỏ các yếu tố đã hết hạn, kiểm tra dấu thời gian của các yếu tố tại thời điểm truy cập là đủ. – 9000
Bạn có thể chạy một chuỗi định kỳ gọi Cache.cleanup() để kích hoạt việc gỡ bỏ các mục đã hết hạn. Trong khi không phải ngay lập tức, một thread đang chạy trong nội bộ có quá nhiều hạn chế (không phải J2EE/GAE tương thích, bị ảnh hưởng của dogpile, vv). –
@Ben Manes cảm ơn đề xuất. Tuy nhiên tôi không thích giao diện Cache. Đầu tiên, nó buộc bạn phải xác định tính toán giá trị. Tôi không cần điều đó. Nếu tôi trả về null, nó sẽ ném NPE. Đó là bởi vì nó luôn gọi getOrCompute, và tôi chỉ cần nhận - giống như một bản đồ đơn giản. Sau đó, ngay cả khi bắt NPE, tôi không thể làm cho nó hoạt động (có lẽ là lỗi của tôi), nhưng nó luôn luôn là mục nhập hết hạn, mặc dù chúng được truy cập. – Bozho