我有两个正在运行的线程调用几个方法(5 或 6),我在其中指定了同步块并仅使用一个对象来锁定它。只有一个同步点会有死锁的可能性吗?到目前为止,我还没有看到这样的情况,但仍然如此。感谢帮助。
问问题
828 次
4 回答
5
死锁描述了两个或多个线程永远被阻塞,互相等待的情况。
如果您的方法相互调用,则可能存在某种情况。通过文档中的示例查找更多详细信息。
于 2013-05-14T15:16:45.143 回答
4
如果您只使用synchronized
调用(即没有加入、等待、通知等),那么您可以“死锁”(在这里广泛使用该术语)的唯一方法是如果其中一个线程未能退出同步块(例如执行一个无限循环,不会从请求某些资源的调用中返回,等等)。所以,是的,这是可能的。
于 2013-05-14T23:12:03.187 回答
2
如果你只有一把锁来锁定共享资源,就不会发生死锁。您可以检查是否满足Coffman 的条件以识别潜在的死锁。
于 2013-05-14T15:39:33.453 回答