我正在寻找关于java main方法 public static void main(String[] args)
的更多知识。当JVM调用main方法时,它会创建主线程并且整个程序在此主线程中执行,直到某些用户线程显式地在它自己的堆栈中开始。
我的问题是,是否可以从其他main
方法启动main
个帖子?
如果有人可以给我一些关于主线程的参考,那就更好了。
答案 0 :(得分:8)
主线程只是一个概念,它是启动你的应用程序的线程的名称,这个线程在任何方面都不是特殊的(除了不是守护程序线程)所以你可以很容易创建不是守护进程的新线程,并在其上调用另一个main方法。
作为主线程没有什么特别之处,它只是第一个要启动的线程。
答案 1 :(得分:0)
据我所知,主线程由JVM启动,而用户启动的其他线程是该线程组中主线程的子线程。
答案 2 :(得分:0)
class FirstApp { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { SecondApp.main(args); } }).start();
启动一个新线程并调用另一个应用程序的main方法。工作良好。但是他们都在相同的过程中运行。
但是,如果你想这样做就好像它是从命令行执行的(在另一个(单独的)进程),你也可以这样做:
import java.io.File; import java.io.IOException; import java.lang.management.ManagementFactory; public class Main { public static void main(String[] args) throws IOException, InterruptedException { StringBuilder cmd = new StringBuilder(); cmd.append(System.getProperty("java.home") + File.separator + "bin" + File.separator + "java "); for (String jvmArg : ManagementFactory.getRuntimeMXBean().getInputArguments()) { cmd.append(jvmArg + " "); } cmd.append("-cp ").append(ManagementFactory.getRuntimeMXBean().getClassPath()).append(" "); cmd.append(Main2.class.getName()).append(" "); // Main2 is the main class of the second application for (String arg : args) { cmd.append(arg).append(" "); } Runtime.getRuntime().exec(cmd.toString()); // continue with your normal app code here } }获取第二个代码