在调用Thread.run()之前,JVM在后台做了什么?或者为什么Thread.run()没有向用户公开?

amb*_*bar 4 java multithreading jvm

Thread.start()程序员调用时,JVM会调用线程的run方法.

  1. 在调用之前,JVM在后台做了Thread.run()什么?

  2. 为什么Thread.run()不暴露给用户?

Gra*_*ray 6

在调用之前,JVM在后台做了Thread.run()什么?

它使JVM能够管理线程对象(分配堆栈空间,线程本地,...)以及分支和调度新线程/进程/克隆或架构用于实现线程的任何架构的每架构本机工作.

为什么Thread.run()不暴露给用户?

我假设你在谈论堆栈框架的"暴露".就像静态main方法一样,显然在用户代码之上的调用框架没有向用户公开,因为它们没用,会让人感到困惑.我会对这个Thread.run()方法说同样的话.它调用堆栈显示,如果你扩展Thread和覆盖run(),但不会,如果你传递一个目标Runnable.

我在这个答案中有很多关于此的细节:

Java run()方法如何工作?