大家應該知道,使用者從發起請求,到伺服器響應的這個過程中,在伺服器中是在一個執行緒中的。如果我們吧查詢出來的物件放到這個執行緒自己的快取中,到使用者請求結束時,把這些東西清理掉,應該是一個不錯的cache方案。
import java.util.HashMap; import java.util.Map; /** * ThreadLocalCache * */ public class ThreadLocalCache { /** * 例項欄位,每個執行緒一個store,每個執行緒生產一個{@code ThreadLocalCache} INSTANCE */ private final ThreadLocal<Map<Object, Object>> store; public ThreadLocalCache() { this.store = new ThreadLocal<Map<Object, Object>>() { @Override protected Map<Object, Object> initialValue() { return new HashMap<Object, Object>(); } }; } public void put(Object key, Object value) { store.get().put(key, value); } public Object get(Object key) { return store.get().get(key); } }