是的,如果您拥有不可重入的锁并且线程尝试重新获取其已拥有的锁(例如通过递归调用),则单线程应用程序可能会死锁.
编辑:我看到帖子被标记为"Java"; 我不知道这是否是更新,或者我之前是否错过了,但无论如何,Java中的锁是重入的,因此您将无法以这种方式死锁单线程应用程序.
这取决于你如何解释这个问题.如果涉及与其他应用程序共享的资源,则为是.没有共享资源,没有.
死锁是指两个或多个竞争行为等待另一个完成的情况,因此两者都没有.
使用单个线程,只有一个操作,它无法与自身竞争.
来自维基百科:
必要的条件
有一个必要和充分的条件可以发生死锁,这被称为Coffman条件,这是他们在1971年EG Coffman的文章中的第一次描述.
- 互斥条件:一次不能由多个进程使用的资源
- 保持和等待条件:已持有资源的进程可以请求新资源
- 没有抢占条件:没有资源可以从持有它的进程中强制删除,资源只能通过进程的显式操作来释放
- 循环等待条件:两个或多个进程形成一个循环链,其中每个进程等待链中下一个进程所持有的资源
根据这个定义,需要两个进程来构成死锁.