首页 > 试题广场 >

jre 判断程序是否执行结束的标准是()

[单选题]

jre 判断程序是否执行结束的标准是()

  • 所有的前台线程执行完毕
  • 所有的后台线程执行完毕
  • 所有的线程执行完毕
  • 和以上都无关
jre判断前台线程结束了,(前台线程就是没有标明为后台线程的线程)就判断程序已经结束,做出操作,关闭后台线程
发表于 2017-07-04 08:55:36 回复(0)
更多回答
     main()函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后结束,不管有没有完成,后台线程主要用与内存分配等方面。                                                                                          
前台线程和后台线程的区别和联系:
1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。
2、可以在任何时候将前台线程修改为后台线程,方式是设置Thread.IsBackground 属性。
3、不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。

4、托管线程池中的线程都是后台线程,使用new Thread方式创建的线程默认都是前台线程。
说明:   
        应用程序的主线程以及使用Thread构造的线程都默认为前台线程                      
    使用Thread建立的线程默认情况下是前台线程,在进程中,只要有一个前台线程未退出,进程就不会终止。主线程就是一个前台线程。而后台线程不管线程是否结束,只要所有的前台线程都退出(包括正常退出和异常退出)后,进程就会自动终止。一般后台线程用于处理时间较短的任务,如在一个Web服务器中可以利用后台线程来处理客户端发过来的请求信息。而前台线程一般用于处理需要长时间等待的任务,如在Web服务器中的监听客户端请求的程序,或是定时对某些系统资源进行扫描的程序
发表于 2017-01-02 14:40:11 回复(22)
来源百度: 后台线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。 前台线程:是指接受后台线程服务的线程,其实前台后台线程是联系在一起,就像傀儡和幕后操纵者一样的关系。傀儡是前台线程、幕后操纵者是后台线程。由前台线程创建的线程默认也是前台线程。可以通过isDaemon()和setDaemon()方法来判断和设置一个线程是否为后台线程。
发表于 2017-04-29 19:43:07 回复(12)
选A
其实这个题,就是在说守护线程和非守护(用户)线程的问题。后台线程就是守护线程,前台线程就是用户线程。
守护线程:是指在程序运行时在后台提供一种通用服务的线程,这种线程并不是必须的。同时守护线程的线程优先级都很低的。JVM中的GC线程就是一个守护线程,只要JVM启动,GC线程就启动了。
用户线程和守护线程几乎没有什么区别,唯一的区别就在于,如果用户线程都已经退出了,只剩下了守护线程,那么JVM直接就退出了。

下面举个例子:
class ThreadDemo extends Thread{
    public void run(){
        System.out.println(Thread.currentThread().getName()+" : begin");
        try{
            Thread.sleep(2000);
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName()+" : end");
    }
}

public class Test{
    public static void main(String[] args){
         System.out.println("test : begin");
         Thread t = new ThreadDemo();
          t.setDaemon(true);
          t.start();
          System.out.println("test : end");
    }
}

/**
    程序输出: 
        test : begin
        test : end
        Thread-0 :begin

运行结果中不会有Thread-0 : end,是因为,守护线程开启之后,中间睡了2s,这个时候又没有锁,主线程直接就执行完了,
一旦主线程结束,那么JVM中就只剩守护线程了,JVM直接就退出了,不管你守护线程有没有执行完。  */

编辑于 2018-07-04 12:09:49 回复(4)
使用Thread建立的线程默认情况下是前台线程,在进程中,只要有一个前台线程未退出,进程就不会终止。主线程就是一个前台线程。而后台线程不管线程是否结束,只要所有的前台线程都退出(包括正常退出和异常退出)后,进程就会自动终止。
发表于 2016-12-21 08:56:27 回复(1)
前台线程:所有显示创建的线程默认为前台线程,前台线程全部执行完成之后,程序终止!
后台线程:又称为守护线程,一般是为前台线程服务的线程,比如 gc(),垃圾回收线程就是后台线程,后台线程的运行状态不能左右进程的状态.
发表于 2019-02-18 16:20:29 回复(0)
main() 方法 = 前台线程
发表于 2018-04-14 13:15:17 回复(0)
main()函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后结束,不管有没有完成,后台线程主要用与内存分配等方面。                                                                                           前台线程和后台线程的区别和联系: 1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。 2、可以在任何时候将前台线程修改为后台线程,方式是设置Thread.IsBackground 属性。 3、不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。 4、托管线程池中的线程都是后台线程,使用new Thread方式创建的线程默认都是前台线程。
发表于 2022-01-30 00:48:33 回复(0)
后台线程就是守护线程
发表于 2021-09-28 08:17:21 回复(0)
如果前台线程停止运行后台线程也就会终止运行,
发表于 2018-09-15 16:39:37 回复(0)
线程方面的了解太少了
发表于 2018-01-03 08:46:29 回复(0)
守护线程不保证finally 一定执行,不要乱用  常说的finally 一定执行都忽略了这个,
发表于 2017-12-19 18:00:42 回复(0)
A
前台线程结束,后台进程自然也中止
发表于 2017-03-19 11:51:21 回复(1)
后台线程就是守护线程,当用户线程运行结束之后,守护线程也就会陆续的结束运行。
可以通过setDaemon()方法设置线程为守护线程,isDaemon()方法判断当前线程是否是守护线程
发表于 2023-10-14 19:29:14 回复(0)
main()函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后结束,不管有没有完成,后台线程主要用与内存分配等方面。
发表于 2021-05-04 20:49:33 回复(0)
个人简单理解:
Java线程分为用户线程和守护线程。用户线程结束时会自动杀死所有的守护线程。
举例:main方法就属于一个用户线程、垃圾回收器就属于一个守护线程。
发表于 2020-10-25 14:56:32 回复(1)
前台线程用来执行任务,后台线程主要用于内存的分配,前台线程结束当前进程结束,进程结束,后台线程未必结束! 
发表于 2017-04-26 08:34:25 回复(1)
后台线程也叫守护线程。只有守护线程时,会终止进程
发表于 2024-04-25 23:49:46 回复(0)
jre执行完成是看前台程序完成,不管后台的事
发表于 2024-02-14 23:25:53 回复(0)
高赞第一除了前台线程任何时候转成后台线程有问题,其他都很正确,然后前台线程就是用户线程,后台线程就是守护线程,守护线程是为用户线程服务的
编辑于 2023-05-09 11:00:41 回复(0)
前台线程与后台线程的结束终止。
mian为前台线程,若main中的前台执行完毕,那么调用的哪些后台方法直接终止
发表于 2023-05-01 00:16:41 回复(0)