实现一个线程安全的LRU(最近最少使用)缓存,要求支持以下操作: 1. `Get(int key)`:如果键存在则返回对应的值,否则返回-1。访问后该键应被标记为最近使用。 2. `Put(int key, int value)`:插入或更新键值对。如果缓存已满(容量达到预设上限),则删除最久未使用的条目。 要求所有操作的平均时间复杂度为 O(1),并保证在多线程环境下正确运行。禁止使用 `ConcurrentDictionary` 或任何内置线程安全集合类型。需手动处理锁机制以避免死锁和性能瓶颈。

