Я пытался выяснить, как JVM обрабатывает исключение времени выполнения в удаленных методах RMI. У меня есть удаленный метод, который содержит следующие два метода:
doSomething(
print "doSomething thread id " + Thread.currentThread.getId()
)
fail(){
print "fail thread id " + Thread.currentThread.getId()
throw new RunTimeException
}
Поведение, которое я видел, было то, что даже если вызывается метод fail(), поток, в который было выбрано исключение времени выполнения, все еще не завершен. Пример вывода:
fail thread id 16
stacktrace
...
doSomething thread id 16
doSomething thread id 16
Исключено. Вызывающий вызовет исключение ServerException с вашим RuntimeException, вложенным в него в качестве причины. Выполняющий поток не умирает.