Java多线程-42-守护线程和加入线程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011541946/article/details/82263175

继续学习线程类的相关实例方法,这篇学习守护线程和加入线程两种方法的基本使用。

1.守护线程

在线程类有一个方法加setDaemon(), 作用就是设置一个线程为守护线程,该线程不会单独执行,当其他非守护线程都执行结束之后,守护线程自动退出。下面,两个线程代码,t1表示非守护线程,t2表示守护线程。

package thread;

public class Demo5_Daemon {

	public static void main(String[] args) {
		
		Thread t1 = new Thread() {
			public void run() {
				for (int i = 0; i < 2; i++) {
					System.out.println(this.getName() + ":aaaaa");
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						
						e.printStackTrace();
					}
				}
			}
		};
		
		Thread t2 = new Thread() {
			public void run() {
				for (int i = 0; i < 50; i++) {
					System.out.println(this.getName() + ":bbbbbb");
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						
						e.printStackTrace();
					}
				}
			}
		};
		
		t2.setDaemon(true);     //true就设置为守护线程
	    t1.start();
	    t2.start();

	}

}

上面表示,T2是守护线程,T2是非守护,所以T1执行两次打印aaa之后,T2不可能全部执行打印50次bbbb。这样说可能有点绕,T2这个相当于就是象棋中的将帅,T1相当于是非守护的,因为只有将帅没有守护好而挂了,那么其他什么兵马车跑都没有存在意义,自动挂了。

运行结果可能如下,确实每次运行结果不一样,当发现T1解析,T2还需要一些反应时间去自动退出进程,有点延迟现象。

Thread-1:bbbbbb
Thread-0:aaaaa
Thread-1:bbbbbb
Thread-0:aaaaa
Thread-1:bbbbbb

2.加入线程

加入线程用join()方法,也就是线程插队。下面打印了三次bbb之后,把t2插队到t1里面,等t2全部执行完,然后执行t1.

package thread;

public class Demo6_Join {

	public static void main(String[] args) {
		
		Thread t1 = new Thread() {
			public void run() {
				for (int i = 0; i < 10; i++) {
					System.out.println(this.getName() + ":aaaaa");
				}
			}
		};
		
		Thread t2 = new Thread() {
			public void run() {
				for (int i = 0; i < 10; i++) {
					System.out.println(this.getName() + ":bbbbbb");
					if(i == 2) {
						try {
							t1.join();
						} catch (InterruptedException e) {
							
							e.printStackTrace();
						}
					}
				}
			}
		};
		
	    t1.start();
	    t2.start();

	}

}

运行结果可能是:

Thread-0:aaaaa
Thread-0:aaaaa
Thread-1:bbbbbb
Thread-0:aaaaa
Thread-1:bbbbbb
Thread-0:aaaaa
Thread-1:bbbbbb
Thread-0:aaaaa
Thread-0:aaaaa
Thread-0:aaaaa
Thread-0:aaaaa
Thread-0:aaaaa
Thread-0:aaaaa
Thread-1:bbbbbb
Thread-1:bbbbbb
Thread-1:bbbbbb
Thread-1:bbbbbb
Thread-1:bbbbbb
Thread-1:bbbbbb
Thread-1:bbbbbb

猜你喜欢

转载自blog.csdn.net/u011541946/article/details/82263175
今日推荐