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");
}
}
废话短说