线程是否可能陷入死锁?

11 浏览
0 Comments

线程是否可能陷入死锁?

在Java中,一个线程在技术上是否可能死锁呢?

我曾在一次面试中被问到这个问题,我回答说这是不可能的,但面试官告诉我是可能的。不幸的是,我没有得到他实现这种死锁的方法。

这让我思考,我能想到的唯一可能发生死锁的情况是当你拥有一个RMI服务器进程,其中包含一个调用自身的方法。调用该方法的代码行被放置在一个同步的代码块中。

这种情况是否可能存在,或者面试官是错误的?

我所思考的源代码如下(其中testDeadlock正在一个RMI服务器进程中运行):

public boolean testDeadlock() throws RemoteException {
    synchronized (this) {
        //通过RMI循环调用testDeadlock            
    }
}

0