【问题标题】:Is java main method a thread? [duplicate]java main 方法是线程吗? [复制]
【发布时间】:2014-03-29 20:24:26
【问题描述】:

我想知道 Java 的 main 方法是否是一个线程。我注意到如果 main 方法返回,所有线程都会被杀死。你能解释一下为什么会这样吗? 提前谢谢你。

【问题讨论】:

  • “如果主方法返回,所有线程都被杀死”......我没有观察到这种行为。

标签: java multithreading main


【解决方案1】:

其实 main 方法是在主线程上运行的! main threads invokes your main()

java 应用程序的所有其他线程都是从这个线程产生的!

【讨论】:

    【解决方案2】:

    当您启动应用程序时,操作系统会为您创建一个线程,它是主线程(或其他上下文中的 UI 线程)。

    这个线程只是运行你的main 方法并停止。 无论如何,有两种类型的线程。

    • 用户线程
    • 守护线程

    main threadUser thread。 当所有用户线程完成后,JVM 将停止。

    嗯,这只是一个“快速响应”,我很喜欢你可以在这里找到专家更好的答案。

    【讨论】:

    • 不,你的回答很好,尤其是你指出程序确实仅仅因为主线程结束而结束,但只有当全部 i> 个非守护线程已结束。
    【解决方案3】:

    是的,main 方法在主线程上运行。但它仍然像任何其他用户线程一样。

    当所有其他用户线程停止运行时,也有守护线程停止。

    主线程还负责产生程序员在其程序中创建的其他线程,这些线程又可以产生其他线程等等。

    并不是说当 main 方法返回时,所有线程都会被杀死。一个原因可能是因为 main 是一个 void 方法,它不能返回任何东西。 :D

    但把双关语放在一边,如果你产生一个或多个运行很长时间的用户线程,并且你没有在 main 方法中使用 join() 方法,那么即使 main 方法结束,其他线程仍然运行,如果他们的 run() 方法没有停止执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2014-11-18
      • 1970-01-01
      • 2015-02-11
      • 2016-05-30
      相关资源
      最近更新 更多