User Thread(Defalut) 和 Daemon Thread.
User Thread 被停止時,JVM 會看是否還有其他 User Thread 在執行,如果有其他 User Thread 在執行,則該 Thread 不會被停止。
Daemon Thread 是一個背景執行緒,並且會跟著創造他的 Thread (father Thread) 的生命週期。
程式裡的差別就是 Thread 內的 setDaemon(boolean) 方法。(此 method 要在 Thread.start() 之前就要決定了)
以下的程式碼可以試著把 setDaemon 打開測試。 也可以把 interrupt 打開測試。
public class TryThread extends Thread{ private String lastname; private long delay; public TryThread(String lastname, long delay) { this.lastname = lastname; this.delay = delay; //this.setDaemon(true); } public static void main(String[] args){ Thread t1 = new TryThread("cristo", 2000L); Thread t2 = new TryThread("eric", 3000L); Thread t3 = new TryThread("john", 5000L); System.out.println("Press Enter..."); t1.start(); t2.start(); //t3.setDaemon(false); t3.start(); try{ System.in.read(); System.out.println("Enter pressed..."); //t1.interrupt(); //t2.interrupt(); //t3.interrupt(); }catch(Exception e){ System.out.println(e); } System.out.println("Enter main()"); return; } @Override public void run() { try{ while(true){ System.out.println(lastname); sleep(delay); } }catch(Exception e){ System.out.println(e); } } }以上參考 Ivor.Hortons.Beginning.Java.Java.7.Edition. CH16 Understanding Threads