addShutdownHook()和Thread.currentThread().join()

1.addShutDownHook(thread1)意思是指thread1是jvm停止前最后执行的线程,无论前面有多少线程,这一线程都是最后执行的。

package runtime;

public class ShutdownHook {
	public static void main(String[] args) {
		Thread t1 = new Thread(){
			@Override
			public void run() {
				System.out.println("thread1");;
			}
		};
		Thread t2 = new Thread(){
			@Override
			public void run() {
				System.out.println("thread2");;
			}
		};
		Runtime.getRuntime().addShutdownHook(new Thread(){
			@Override
			public void run() {
				System.out.println("shutdown");;
			}
		});
		
		t1.start();
		t2.start();
	}
}

上面代码会输出thread1

                        thread2

                        shutdown

                    或thread2

                        thread1

                        shutdown


2.Thread.currentThread().join(), thread1.join()本意现指先执行thread1,再执行其他线程。用在当前前程时,表明当前线程一直等待下去,只有当前线程死掉,才会退出执行当前线程。具体解释参见

http://stackoverflow.com/questions/5999595/thread-join-on-itself

原解释如下:

It happens out that the join() method uses the isAlive() method to determine when to return from the join() method. In the current implementation, it also does not check to see if the thread is joining itself.
In other words, the join() method returns when and only when the thread is no longer alive. This will have the effect of waiting forever.



转载于:https://my.oschina.net/u/2430057/blog/544562

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值