Tôi đang cố gắng tạo bản đồ trong đó các mục hết thời gian chờ và xóa sau một khoảng thời gian nhất định.Bản đồ có các mục nhập thời gian/tạm thời - bộ nhớ không phải là vấn đề
Về cơ bản, <K, V> Map.put(K key, V value, long **time**)
- mục nhập sẽ được đưa vào bản đồ ngay lập tức và sẽ hết hạn sau thời gian (mili giây). Tôi không cần khôi phục mục nhập đã xóa vào bất kỳ thời điểm nào trong tương lai nhưng tôi muốn đảm bảo rằng nó không còn trong bản đồ nữa.
Ví dụ: map.put("foo", "bar", 60l * 1000l)
sẽ cho phép cặp khóa-giá trị này hoạt động trong bản đồ trong một phút (60long và 1000long).
Nỗ lực: sử dụng một ConcurentMap và thực hiện Map.put(K key, V value, long **time**)
qua như sau:
1. gọi super.put(key, value)
2. tạo ra một chủ đề mà ngủ cho thời gian (ms)
3. gọi remove(key)
để xóa mục nhập.
Câu hỏi: vui lòng nhận xét/cho tôi biết đây có phải là ý tưởng hay về tính an toàn của luồng, sự nhất quán hay bất kỳ sai sót nào trong nỗ lực của tôi hay không. Nếu bạn nghĩ rằng có một cách tốt hơn để thực hiện việc này, vui lòng cung cấp bất kỳ lời khuyên nào.
Chỉnh sửa: Cảm ơn bạn đã trả lời, bộ nhớ không phải là vấn đề ở đây, tôi thực sự chỉ quan tâm đến khoảng thời gian ngắn của các mục nhập. Cảm ơn bạn.
Cảm ơn bạn đã trả lời nhưng tôi chỉ quan tâm đến thời gian ở đây, nhớ không phải là một vấn đề. –
+1 để chỉnh sửa nhanh.Tôi muốn các mục được sống cho các lượng thời gian khác nhau nhưng việc thực hiện thứ hai với Timer là rất hữu ích. Cảm ơn. –