java - 在单线程环境中使用像 Hashtable 这样的线程安全集合类有什么缺点吗?
问题描述
面试官问我在单线程环境中使用像 Hashtable 这样的线程安全类的缺点?有什么缺点吗?如果不是那么为什么后面会引入非线程安全类?
解决方案
- 它们在单线程环境中速度较慢。现代 JIT 在单线程环境中使用同步类非常有效,但并不完美。
- 它们在多线程环境中要慢得多。如果您有不可变的集合,您可以安全地从不同的线程使用,但同步集合的工作速度会慢得多。
- [设计] 它的锁定语义大多是无用的,所以无论如何都需要额外的同步。你很少只需要读或写,大多数时候你先读然后写,你希望它是原子的。或者您想允许多个同时读取。
推荐阅读
- python - 获取退货报价
- arrays - 如何对矩阵元素进行排序,以使每两列之和与每两行之和之间的差异最小化?
- react-native - 使用 FlatList 在 React-Native Nativebase Tabs 中显示 Tabs
- c# - 所有 Blazor 页面的共同属性?
- selenium - 无法为 Amazon.com 找到正确的 Xpath,列表页面“品牌”过滤器
- html - 如何在 Angular 组件中使用嵌套的弹性框?
- typescript - 打字稿和异步调用
- python - 在字符串类型的列表中查找唯一值,然后将原始列表转换为等价的数字
- python - python - 如何将元素嵌套元组的矩阵拆分为Python中的块?
- ruby - 如何从源代码 https://github.com/cmedley/terraforming 构建和安装这个 gem 包?