java - 如何在多线程环境中模拟挂起的线程?

标签 java multithreading concurrency

我们有一个处理数百万条记录的 Java 多线程环境。在生产中,观察到一些线程挂起,等待同步方法。通过消除对同步方法的依赖性提供了解决方法。

但是,仍然无法在 Dev 环境中复制问题,即多个线程卡在同步方法上。在 Dev 中,所有线程都在每次尝试中完成。关于如何在 Dev 中复制问题以对补丁进行单元测试有什么建议吗?

经过更多分析,似乎是饥饿的情况。关于如何在执行程序框架中模拟饥饿的任何指示?

最佳答案

在您的 DEV 环境中,由于您无法创建类似生产的环境来重新创建您需要在同步块(synchronized block)中引入长 sleep 语句的错误,因此其他线程必须等待线程完成该同步块(synchronized block)。所以只需在同步块(synchronized block)中添加一个长 sleep 语句并尝试。

关于java - 如何在多线程环境中模拟挂起的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49801632/

相关文章:

java - 如何将数据从一个 Web 应用程序发送到另一个 Web 应用程序

Python epoll.register 线程安全吗?

java - Java 中的监视器是什么?

java - 周期开销是不连续的吗?

java - 在 Main 方法中运行两个线程

java - 在 IntelliJ IDEA 中导入 Maven 依赖项

java - JAXB 将不需要的 namespace 声明附加到标记

java - 相似的并发任务,运行时间差异很大(Java)

java - 是否可以注释导出的函数名称?

c++ - 如何在不指定信号量资源计数的情况下创建 ReadWriteMutex?