进入无争议的同步块时,正在运行的线程是否可以运行?

时间:2016-11-01 07:06:15

标签: java multithreading thread-state

我们的生产箱上发生了一件奇怪的事情。 代码功能: UI servlet对文档对象进行监视锁定,该文档对象由用户操作并对其执行一些计算。获取监视器锁定是为了防止同一文档对象同时被多个用户同时修改。

产品中观察到的问题: 很少有用户操作超时。

日志分析: 对应于超时用户操作的线程是在获取文档对象上的监视器锁定之前打印所有日志。然后有一个超过1小时的间隙,其中线程没有在日志中出现,然后它突然变为活着并进行计算并尝试发回一个明显错误的响应,因为HTTP请求已经超时。 我们已经检查了日志和代码,并且可以确认没有其他线程已经获取该特定文档对象的监视器锁定。所以锁定在这个问题上是无可争议的。

可能出现什么问题?是否只是在遇到同步块时线程被置于Runnable状态,并且在接下来的60-80分钟内,CPU从未有机会运行这个特定的可运行线程?

0 个答案:

没有答案