Java中Main函数探讨

Posted 土豆烧鸡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中Main函数探讨相关的知识,希望对你有一定的参考价值。

  上一章看到Main线程后,不禁疑问,Main函数不是执行完他的任务就结束他的使命了嘛?

然后发现,事情没有那么简单。

案例1:

 1 public class Main {
 2 
 3     public static void main(String[] args) {
 4        Thread t1= new Thread(() -> {
 5             while(true){
 6                 try {
 7                     Thread.sleep(1000);
 8                 } catch (InterruptedException e) {
 9                     e.printStackTrace();
10                 }
11             }
12         });
13        t1.setName("Hello WOrld Thread");
14        //t1.start();
15         System.out.println("Hello World!");
16 
17     }
18 }

执行完之后,线程就死了。  有没有发现你的这个按钮是黑色的?   相信我们在初始学习Java的时候,这个按钮都是黑色的把。

 

 

第二种方式:  把线程打开  ,取消注释14行代码。

我们可以看到按钮的对比:

 

 

 

这是为什么呢?  我们深入虚拟机中探讨一下:

用虚拟机指令:  C:\\Program Files\\Java\\jdk1.8.0_211\\bin\\jvisualvm  查看一下他的线程:

 

 

 原来是:我们的JAVA程序,启动main函数之后,执行完他的任务,new了一个新的线程,但是这个线程还在不断执行中,并没有死亡,所有我们的Java程序还在运行中。

如果:  我们把Hello WOrld Thread 改为守护线程:  

       t1.setName("Hello WOrld Thread");
       t1.setDaemon(true);
       t1.start();
        System.out.println("Hello World!");

 再运行一下程序,我们发现他按钮变成灰色的了。再进入jvisualvm 查看一下线程情况。

好的,我们已经找不到Main这个进程了。

 

总结:main函数执行完他的任务之后,就已经死亡掉了。  但是Java程序中,如果还有非守护线程还在执行过程中,我们的程序就依然在执行中。

 

以上是关于Java中Main函数探讨的主要内容,如果未能解决你的问题,请参考以下文章

NDK: ant 错误 [javah] Exception in thread "main" java.lang.NullPointerException 多种解决办法(代码片段

jsp页面被tomcat引擎运行的时候组装成java片段,但是这些java片段怎么没有main方法作为程序的入口啊?

java类的测试( main函数)

Java方法

如何从 Android Studio 中片段的 XML 布局导航到相应的 java 类?

创建片段而不从 java 代码实例化它