【问题标题】:Where the main method thread will be created [duplicate]将在哪里创建主方法线程[重复]
【发布时间】:2014-01-08 23:01:29
【问题描述】:

您好,我想知道 main 方法将如何以及在何处创建用于执行应用程序的线程。是extends thread还是runnable。

【问题讨论】:

    标签: java multithreading


    【解决方案1】:

    这是一个很好的问题。当您执行应用程序时,JRE 将为它创建一个线程。该线程将执行您的main() 方法。程序结束时完成。显然它应该是最后一个要结束的线程。它扩展了Thread 类,可以通过以下方式访问:

    class ThreadTest {
        public static void main(String [] args){
    
        Thread mainThread = Thread.currentThread();
        }
    }
    

    【讨论】:

    【解决方案2】:

    主线程是程序中第一个执行的线程。它是由jvm创建的。

    【讨论】:

    • 如何使用扩展线程或实现线程创建。
    • 主线程被jvm调用,当程序运行jvm检查main方法并开始执行时,只能使用extends或runnable创建主线程的子线程
    【解决方案3】:

    我想知道 main 方法将如何以及在何处创建用于执行应用程序的线程。

    它没有。

    实际发生的是something 创建main 线程,然后main 线程调用相关类中的public static void main(String[]) 方法。

    这是如何发生的取决于实现。如果您真的想了解详细信息,可以下载适用于 Java 6、7 和 8(测试版)的完整 OpenJDK 代码库。


    是扩展线程还是可运行。

    没有指定主线程是Thread的实例还是Thread的子类。它不能(只是)是Runnable,尽管Runnable 可以用于调用main 方法。

    不过main方法可以查出主线程的实际类如下:

    class Test {
        public static void main(String [] args){
    
             Thread t = Thread.currentThread();
             System.out.println("Main thread class is " + t.getClass());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 2013-10-26
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      相关资源
      最近更新 更多