【问题标题】:how main() is thread if we not extends Thread or implements Runnable? [duplicate]如果我们不扩展 Thread 或实现 Runnable,那么 main() 如何是线程? [复制]
【发布时间】:2018-01-10 00:40:38
【问题描述】:

我知道 main() 是一个线程,只是因为 cmd 说的。但是我想知道如果我们不扩展 Thread 类或 implements Runnable 接口,它怎么可能是一个线程?

【问题讨论】:

  • 编译魔法。
  • 基本上,JVM 在您的应用程序启动之前为您启动一个线程。并且该线程很可能是由操作系统在 JVM 启动时创建的:所以操作系统很神奇。
  • JVM 启动线程调用主线程是启动程序的线程,或者只是运行您的公共静态 void main(String... args) 方法的线程。
  • 所以,我认为这里的关键是熟悉线程的概念;它是一个执行单元。程序的 main 函数从 JVM 隐式创建的线程开始,因为它必须在 a 线程中执行。

标签: java


【解决方案1】:

JVM 启动时,它会创建一个名为 main 的线程。该线程代表主线程入口,除非您从该线程启动新线程,否则整个应用程序都将在其上执行。

main 线程随后将在您的入口类中查找static void main(String[]) 以执行它作为您的程序入口点。

你不应该混淆 main 线程和 #main(String[]) 方法,因为它们是完全不同的东西。

【讨论】:

    【解决方案2】:

    大多数操作系统上的所有进程都作为线程运行,因此 Java 的 main 方法不可能不是线程。虽然它没有扩展或实现 Thread 类,但它在可见代码下仍然作为线程运行。

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 2012-02-15
      • 2013-05-05
      • 2016-11-09
      相关资源
      最近更新 更多