当List并发操作时存在数据丢失的情况。如果坚持使用List可以在处理集合前加锁,但是尽量是在单种操作的情况下。如仅Add操作。
建议使用以下5种线程安全集合能避免死锁,提高容错率
1.BlockingCollection 与经典的阻塞队列数据结构类似,能够适用于多个任务添加和删除数据,提供阻塞和限界能力。
2.ConcurrentBag 提供对象的线程安全的无序集合
3.ConcurrentDictionary 提供可有多个线程同时访问的键值对的线程安全集合
4.ConcurrentQueue 提供线程安全的先进先出集合
5.ConcurrentStack 提供线程安全的后进先出集合