实现一个线程安全的LRU(最近最少使用)缓存,要求支持以下操作: 1. `Get(int key)`:如果键存在则返回对应的值,否则返回-1。 2. `Put(int key, int value)`:插入或更新键值对。 要求: - 所有操作的时间复杂度必须为 O(1)。 - 缓存容量在构造时指定,当超过容量时,应淘汰最久未使用的条目。 - 必须保证在多线程环境下正确运行,即多个线程同时调用 Get 和 Put 时不会出现数据竞争或不一致状态。 请使用 C# 实现该类,并说明关键设计决策以确保线程安全和性能。
