首页 理论教育 Java程序设计:用户线程与守护线程

Java程序设计:用户线程与守护线程

时间:2023-11-01 理论教育 版权反馈
【摘要】:Java线程分为用户线程和守护线程。当进程中正在运行的线程都是守护线程时,JVM退出。守护线程中产生的新线程也是守护线程。守护线程不能用来执行文件、数据库的读写或执行计算等任务,因为当进程中没有用户线程时,JVM会退出,不会等待守护线程执行完毕,可能导致守护线程中的读写或计算等操作没有完成。演示守护线程效果。从结果可见,当main线程结束后,剩下的都是守护线程了,于是JVM退出了,而创建的守护线程1也随之终结了。

Java程序设计:用户线程与守护线程

Java线程分为用户线程(user thread)和守护线程(daemon thread)。守护线程又称为后台线程或服务线程,优先级比较低,为其他线程提供服务。当进程中正在运行的线程都是守护线程时,JVM退出。例如,JVM垃圾回收线程就是典型的守护线程。Thread类public final boolean isDaemon()方法用于测试该线程是否为守护线程。Thread类public final void setDaemon(boolean on)方法用于将该线程标记为守护线程或用户线程。

关于守护线程需要注意以下几点:

(1)用户线程在启动前可以调用Thread对象的set Daemon(true)将该线程转化为守护线程,不能将正在运行的用户线程转化为守护线程。

(2)守护线程中产生的新线程也是守护线程。

(3)守护线程不能用来执行文件、数据库的读写或执行计算等任务,因为当进程中没有用户线程时,JVM会退出,不会等待守护线程执行完毕,可能导致守护线程中的读写或计算等操作没有完成。

【例6-3】

演示守护线程效果。

步骤1:定义一个守护任务类Damon Task,不断执行打印语句(死循环),如图6-7所示。(www.xing528.com)

图6-7 守护任务类DamonTask

步骤2:定义一个测试类Damen Thread Test,用于演示守护线程结束的过程,如图6-8所示。

图6-8 守护线程测试

在main线程(非守护线程)中,创建了一个线程对象t,并将其转化为守护线程,然后启动。从结果可见,当main线程结束后,剩下的都是守护线程了,于是JVM退出了,而创建的守护线程1也随之终结了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈