我们的一个工具springboot结构,但是它都是用mian方法去调用,所以我在想每次调用一个main,是new 一个新的线程嘛,到最好其实不是,main只有一个

public class MainClass1 {
    public static void main(String[] args) {
        System.out.println("MainClass1 is running in thread: " + Thread.currentThread().getName());
        MainClass2.main(args); // 调用另一个类的 main 方法
    }
}

class MainClass2 {
    public static void main(String[] args) {
        System.out.println("MainClass2 is running in thread: " + Thread.currentThread().getName());
    }
}

结果:

MainClass1 is running in thread: main
MainClass2 is running in thread: main

在这个例子中,虽然调用了两个不同类的 main 方法,但它们实际上都运行在同一个线程中(即 "main" 线程)。调用 MainClass2.main(args) 不会创建新的线程,它仅仅是对静态方法的普通调用。

public class MainClass1 {
    public static void main(String[] args) {
        System.out.println("MainClass1 is running in thread: " + Thread.currentThread().getName());

        // 在新线程中执行另一个 main 方法
        new Thread(() -> MainClass2.main(args)).start();
    }
}

public class MainClass2 {
    public static void main(String[] args) {
        System.out.println("MainClass2 is running in thread: " + Thread.currentThread().getName());
    }
}

3. Spring Boot 应用中的 main 方法

在 Spring Boot 项目中,通常你只有一个 main 方法(启动类中的 main 方法),这个方法用于启动整个应用。Spring Boot 应用的主要工作线程是由主线程启动的,但应用的业务逻辑(如处理 HTTP 请求、异步任务)通常会在其他线程中运行。

通常来说,你不会有多个 main 方法并发执行,即使你定义了多个 main 方法,实际运行时,只有一个 main 方法会在程序启动时由 JVM 作为入口执行。

4. 总结

  • 同一个线程:如果你在一个应用程序中从一个 main 方法调用另一个 main 方法,它们实际上都在同一个线程中运行(即主线程),除非你显式地创建新线程来执行它们。
  • 多线程:要在不同的线程中执行 main 方法或其他任务,必须显式创建新的线程(如使用 Thread 或线程池)。
  • Spring Boot:Spring Boot 项目启动时,主线程执行 main 方法,但之后的业务逻辑运行通常是由其他线程处理的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值