假设我们已经在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工作原理的正常理解背道而驰。
答案 0 :(得分:1)
否
不可能更改正在运行(或已阻止)代码的线程。
PS:虽然应用服务器有时会做一些棘手的事情,但它们无法克服JVM的限制(直到它们没有为自己的JVM提供非标准行为)。