Возможно ли для нити сам Deadlock?
Технически возможно, чтобы поток в Java самоблокировался?
Некоторое время назад меня спросили об этом на собеседовании и ответили, что это невозможно, но интервьюер сказал мне, что это так. К сожалению, я не смог получить его метод о том, как достичь этого тупика.
Это заставило меня задуматься, и единственная ситуация, о которой я могу подумать, это то, где вы можете сделать это, когда у вас есть процесс RMI-сервера, который содержит метод, который вызывает сам себя. Строка кода, которая вызывает метод, помещается в синхронизированный блок.
Это вообще возможно, или интервьюер был не прав?
Исходный код, о котором я думал, был примерно таким (где testDeadlock запущен в процессе RMI-сервера)
public boolean testDeadlock () throws RemoteException {
synchronized (this) {
//Call testDeadlock via RMI loopback
}
}