packagebook.thread;/*** Daemon(守护)线程
* Daemon线程区别一般线程之处是:
* 只有虚拟机中的用户线程(非Daimon线程)全部结束,Daemon线程就会立即结束,并且也不会调用finally里的语句。
* daemon线程所产生的所有线程都是daemon的*/publicclassDaemon {staticclassMainThreadextendsThread {publicvoidrun() {
System.out.println("MainThread is daemon?"+this.isDaemon());
System.out.println("MainThread begin!");//启动子线程Thread sub1=newSubThread();//sub1线程为守护线程sub1.setDaemon(true);
sub1.start();try{
Thread.sleep(1000);
}catch(InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println("MainThread"+"finally");
}
System.out.println("MainThread end!");
}
}staticclassSubThreadextendsThread {publicvoidrun() {
System.out.println("SubThread is daemon?"+this.isDaemon());
System.out.println("SubThread begin!");inti=0;try{while(i<10) {
System.out.println("SubThread"+i++);
Thread.sleep(200);
}
}catch(InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println("SubThread finally");
}
System.out.println("SubThread end!");
}
}publicstaticvoidmain(String[] args) {
System.out.println("Main begin!");//默认情况下mainThread是普通线程Thread mainThread=newMainThread();//启动mainThread线程mainThread.start();try{
Thread.sleep(500);
}catch(InterruptedException e1) {
e1.printStackTrace();
}
System.out.println("Main end!");
}
}