Java应用程序服务器执行堆栈线程相似性

时间:2018-10-02 09:45:50

标签: java multithreading threadpool application-server

假设我们已经在Tomcat或其他应用程序服务器下部署了Spring Boot应用程序。

让我们说该应用程序正在运行,并且具有一些方法执行堆栈。 App Server是否可以在App Server内置线程池中的线程之间转移执行堆栈?

即线程ID可以在同一应用程序执行堆栈(而不是内部应用程序服务器堆栈)内更改吗?考虑示例:

class FooBar {

  fooBar() {
    foo()
    bar()
  }

  foo() {}

  bar() {}

}

当在线程ID 1中启动fooBar()时,App服务器是否可能使方法bar()在线程ID 1中运行而方法foo()在线程ID 2中运行?

警告:这是一个棘手的问题,App服务器执行意外操作,这与对JVM工作原理的正常理解背道而驰。

1 个答案:

答案 0 :(得分:1)

不可能更改正在运行(或已阻止)代码的线程。

PS:虽然应用服务器有时会做一些棘手的事情,但它们无法克服JVM的限制(直到它们没有为自己的JVM提供非标准行为)。