1. 程式人生 > >守護線程與用戶線程

守護線程與用戶線程

star color ont public 存在 nts 程序 live runnable

一、守護線程(Daemon Thread)

為用戶線程提供便利服務的線程就是守護線程,比如JVM中的垃圾回收器就是一種守護線程。守護線程不止是有JVM自行創建的線程,程序員也可以通過setDaemon(true)的方式,將用戶線程轉化為守護線程。當然,既然守護線程的唯一作用是為用戶線程提供便利服務,所以當程序中僅存在守護線程時,守護線程就沒有存在的必要了,JVM會關閉剩下的守護線程並且推出該進程。

二、用戶線程(User Thread)

所謂的用戶線程就是我們平時建議的有著自己專門作用的線程,也就是非守護線程。我們常見的main方法也同樣是用戶線程的一員。

public class DaemonThreadTest {
    public static void main(String[]args){
        Thread t = new Thread(
                new Runnable() {
                    @Override
                    public void run() {
                        try {
                            while (true)
                                System.
out.println("這是守護線程"); }catch (Exception e){ e.printStackTrace(); } } } ); // t.setDaemon(true); t.start(); System.out.println(t.isAlive()); } }

通過這段代碼的執行,我們可以發現守護線程只能為線程提供服務,無法做輸入輸出操作。

守護線程與用戶線程