Привязанность потоков стека выполнения серверов приложений Java - PullRequest
0 голосов
/ 02 октября 2018

Допустим, у нас есть приложение Spring Boot, развернутое под Tomcat или другим сервером приложений.

Допустим, приложение запущено и имеет некоторый стек выполнения метода.Возможно ли, чтобы стек выполнения мог передаваться сервером приложений между потоками во встроенном пуле потоков сервера приложений?

Т.е. может ли идентификатор потока будет изменяться в пределах одного и того же стека выполнения приложения (а не внутреннего стека сервера приложений)?Рассмотрим пример:

class FooBar {

  fooBar() {
    foo()
    bar()
  }

  foo() {}

  bar() {}

}

Может ли сервер приложений запустить метод bar () с идентификатором потока 1, а метод foo () - с идентификатором потока 2, когда fooBar () запущен в идентификаторе потока 1?

Предупреждение. Это сложный вопрос, и серверы приложений делают неожиданные вещи, которые противоречат нормальному пониманию того, как работает JVM.

1 Ответ

0 голосов
/ 02 октября 2018

Нет

Невозможно изменить поток выполняемого (или заблокированного) кода.

PS: хотя серверы приложений некоторое время делают сложные вещи, которые они не могут тормозитьОграничения JVM (пока они не предоставляют свою собственную JVM с нестандартным поведением).

...