java - 什么导致同步锁卡住?
问题描述
我有这个简单的代码,它只是一个测试用例
try
{
synchronized(this) {
while(number != 4)
{
System.out.println("Waiting...");
this.wait();
}
number = 4;
this.notifyAll();
}
}
catch(InterruptedException e)
{}
在我所知道的关于使用 wait() 方法的知识中,一旦调用了等待,接下来应该做的事情。但是,在这种情况下,我看不到等待结束。我试图放置第二个同步块,但这似乎不起作用。
你知道是什么导致等待挂起吗?我查了一下死锁,但这似乎是完全不同的事情。
解决方案
认为你最好从这里得到一些想法
然后相应地修改您的代码,只要没有另一个线程正在运行。
wait() 方法使当前线程无限期地等待,直到另一个线程为此对象调用 notify() 或 notifyAll()。
推荐阅读
- mysql - SQL 练习:需要帮助
- ios - 为什么 SwiftObjects 不能与自动释放池块一起使用?
- web-services - 在 Hybris 中配置 Soap Web 服务的步骤。?
- java - 错误:不支持的方法:AndroidProject.getVariantNames()
- java - java中的引用是什么?
- c++ - C++ 在构造函数期间将“self”添加到地图中
- html - 固定位置到浮动框中
- c++ - 如何从 VBScript 获取值到我的 C++ 主机?
- python - django-rest-framework 中的 JWT 身份验证问题
- javascript - 在 JavaScript 中为下拉列表使用选择器