首页 > 解决方案 > 在单线程环境中使用像 Hashtable 这样的线程安全集合类有什么缺点吗?

问题描述

面试官问我在单线程环境中使用像 Hashtable 这样的线程安全类的缺点?有什么缺点吗?如果不是那么为什么后面会引入非线程安全类?

标签: javamultithreadingcollectionshashtable

解决方案


  1. 它们在单线程环境中速度较慢。现代 JIT 在单线程环境中使用同步类非常有效,但并不完美。
  2. 它们在多线程环境中要慢得多。如果您有不可变的集合,您可以安全地从不同的线程使用,但同步集合的工作速度会慢得多。
  3. [设计] 它的锁定语义大多是无用的,所以无论如何都需要额外的同步。你很少只需要读或写,大多数时候你先读然后写,你希望它是原子的。或者您想允许多个同时读取。

推荐阅读