Edgar---Demo3

package Thread;
/*Java中的线程分为两类:一种是守护线程,一种是用户线程。
 * 守护线程
 *(首先主线程main和GC就是守护线程)
 * 前面线程都结束以后,守护线程就结束
 * 用户线程又称前台线程
 * 
   它们在几乎每个方面都是相同的,唯一的区别是判断JVM何时离开。
   守护线程是用来服务用户线程的,
   通过在start()方法前调用 thread.setDaemon(true)可以把一个用户线程变成一个守护线程。
   Java垃圾回收就是一个典型的守护线程。 
   一个Java应用程序java.exe,其实至少有三个线程:main()主线程,gc() 垃圾回收线程,异常处理线程。当然如果发生异常,会影响主线程。其中,gc线程和异常处理线程都是守护线程。 
 *  若JVM中都是守护线程,当前JVM将退出。
 *  Demo泰坦尼克经典片段
 */
public class Demo3 {
     
public static void main(String[] args) {
     
	Jack jack=new Jack();
	Rose rose=new Rose();
	rose.start();
	//设置为守护线程 看对比 jack里面写的是一个死循环
	//也就是说他一直在说你跳我就跳,但是没有执行
	//当我们把他变成一个守护线程,当rose线程结束后
	//jack自行结束线程
	//jack.setDaemon(false);
	//不是守护线程的输出
	/*
	 *  i jump you  jump
		啊。。。噗通
		Rose you jump i jump
	 */
	jack.setDaemon(true);
	//设置完守护线程后
	/*
	 * Rose you jump i jump
       啊。。。噗通
	 */
	jack.start();
}
}
class Jack extends Thread{
     
	
	@Override
	public void run() {
     
		for (;; ) {
     
		 try {
     
			Thread.sleep(1000);
		} catch (InterruptedException e) {
     
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 System.out.println("Rose you jump i jump");
	}
	}
}
class Rose extends Thread{
     
	@Override
	public void run() {
     
		for (int i = 0; i < 5; i++) {
     
		try {
     
			Thread.sleep(1000);
		} catch (InterruptedException e) {
     
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 System.out.println(" i jump you  jump");
	}
		System.out.println("啊。。。噗通");
	}
	 
	
}

你可能感兴趣的:(Java基础)