【发布时间】:2011-12-19 20:59:58
【问题描述】:
刚刚了解了有关线程和并发的更多信息,并想到了使用常规哈希表和 ConcurrentHashMap。
测试这些哈希表的并发性的好方法是什么?
(显然哈希表会通过这个测试)
如果我还能以某种方式跟踪测试执行的读/写次数以查看哪个(ht 或并发 ht)更快,那就太棒了。
【问题讨论】:
-
我可以告诉你,基本的哈希表会更快,但代价显然是线程可能会破坏数据并使整个事情变得不一致......
-
你永远无法测试安全性——你只能证明它不存在。
-
你对 Hashtable 有误解:它是线程安全的。然而,它已被弃用并被 HashMap 取代,它不是线程安全的。
-
那么我如何编写代码来测试这些条件,并使用类似的非线程安全数据结构(线程安全并发对应物)来解决这个问题?
-
启动两个线程,一个增加映射中指定测试键的整数值,另一个读取它。或者尝试插入递增的键并观察其他线程看到它们出现的顺序。这不是一个合适的测试(因为这样的测试是不可能编写的),但它可能会展示可能发生的事情。
标签: java concurrency hashtable