java - 如何Junit测试一个同步对象不能同时被两个线程访问?

标签 java multithreading junit hashmap synchronized

有什么方法可以进行 Junit 测试来确保同步对象(在我的例子中是同步块(synchronized block)中的 HashMap)不会被两个线程同时访问?例如强制两个线程尝试访问并抛出异常。 感谢您的帮助!

最佳答案

我见过的有助于线程测试的最佳框架是Thread Weaver 。至少它提供了一些确定性的线程调度方式,以及尝试查找竞争条件的有限(但有用)方式。

您甚至可以编写一些更复杂的线程调度场景,但这些测试将不可避免地是白盒测试。不过,这些也有其用处。

关于java - 如何Junit测试一个同步对象不能同时被两个线程访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37638583/

相关文章:

c++ - 为什么这个 OpenMP 程序比单线程程序慢?

java - 自动查找泄漏内存的 JUnit 测试的方法

java - 另一个 Ant + JUnit 类路径问题

java - 嵌套异常是 java.util.concurrent.ExecutionException

java - 单击“下一步”后无法更改 jScrollPane 中的图像

java:由 ReentrantLock 行为指示的线程行为

c# - 当 ThreadB Monitor.Pulse(_locker) 哪个线程会先得到 _locker?

Spring Boot - 测试 - bean 的拆卸

java - 从数据库外的对象设置Choisebox的值属性

java - 根据按下的按钮显示信息