Solo  当前访客:1 开始使用

java程序的执行

一个Java应用程序正在运行:

该程序被加载到Java虚拟机(JVM)中并开始执行,程序在JVM中运行,JVM会解释或编译Java字节码,并将其转换为计算机可以执行的机器码

程序的开始:

一旦Java应用程序被加载到虚拟机中,它会开始执行程序的main方法(如果存在)。这个main方法是Java应用程序的入口点,JVM会从这里开始执行指令。在main方法中,程序可以调用其他方法、创建对象、处理输入输出等;;GUI 中L事件监听、事件驱动;方法调用

main方法:主线程main线程是用户线程(非守护线程),当非守护线程结束之后,守护线程就会结束(很重要)

main线程、守护线程(Daemon thread )、非守护线程(user thread)。。 守护线程为非守护线程服务,守护线程是为其他线程提供服务的线程,而非守护线程是程序的主要执行线程。当所有的非守护线程都执行完毕时,Java 虚拟机会自动退出。System.exit(0)。这会强制终止 Java 虚拟机,不论是否有非守护线程在运行。

通过设置线程的 setDaemon(true) 方法将线程设置为守护线程

常见的守护线程:

垃圾回收、后台定时任务的线程、监控JMX的线程

public class DaemonThreadExample {
    public static void main(String[] args) {
        Thread daemonThread = new Thread(() -> {
            while (true) {
                System.out.println("Daemon Thread is running");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        // 将线程设置为守护线程
        daemonThread.setDaemon(true);

        // 启动线程
        daemonThread.start();

        // 主线程休眠一段时间,,主线程main线程是用户线程(非守护线程),当非守护线程结束之后,守护线程就会结束
        try {
            Thread.sleep(50000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Main Thread is ending");
    }
}

标题:java程序的执行
作者:temp12138
地址:https://solo.mfyzl.icu/articles/2024/03/20/1710914300204.html

标签:
新一篇: 为什么重写 equals 就要重写 hashCode 方法? 旧一篇: Mockito 测试框架