“与所有者方法的长监视器争用事件”的原因可能是什么?

2022-09-01 15:53:28

我是一个初学者,我有一个任务,即制作一个由两个客户端和一个服务器交换字符串的基本聊天应用程序,这些字符串是目的地+消息。

我已经编写了一些代码,但是当我使用它时,我在另一端得到了这个“与所有者方法的长监视器争用事件”。

任何人都可以帮助我解决这个问题吗?或者谁能告诉我这个原因吗?


答案 1

这是由一个线程长时间持有监视器/互斥体并阻塞其他线程引起的。例如:

synchronized(lock) {
    /* do something that takes a long time */
}

在这种情况下,“很长一段时间”是100毫秒或更长时间。(此拉取请求是添加此检查的位置。

这是一个警告...但建议您对其进行调查,因为它可能会导致您的应用程序无响应。

通常,解决方法是减少应用程序保存互斥锁所需的时间长度。但是,如果没有看到您的代码,就很难建议您如何执行此操作。


答案 2

推荐