实现一个线程安全的LRU(最近最少使用)缓存,要求支持以下操作: 1. `Get(int key)`:如果键存在,则返回对应的值;否则返回-1。 2. `Put(int key, int value)`:插入或更新键值对。如果缓存容量已满,则在插入前删除最久未使用的条目。 要求所有操作的时间复杂度为 O(1),并保证在多线程环境下正确工作。不允许使用 .NET 内置的并发集合类(如 ConcurrentDictionary),但可以使用锁或其他同步机制。同时,请解释你的设计如何避免死锁并保证性能。
