Java多线程编程核心技术之方法join的使用

本文介绍了Java多线程编程中join方法的使用,包括其在等待线程执行完成、线程排队运行中的作用,以及join与synchronized的区别。同时,详细讨论了join方法可能抛出的InterruptedException,并对比了join(long)与sleep(long)在处理同步上的差异。最后,文章提到了join()源码中的一些意外情况,并邀请读者进行讨论。
摘要由CSDN通过智能技术生成

使用场景        

        在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束,这时,如果主线程向等待子线程执行完成后再结束,就需要用到join()方法了。

        join()的作用是等待线程对象销毁。

        方法join具有使线程排队运行的作用,有些类似同步的运行效果。join与synchronized的区别是:join在内部使用了wait()方法进行等待,而synchronized关键字使用的是“对象监视器”原理作为同步。

方法join与异常

        在join方法执行过程中,如果当前线程对象被中断interrupt(),则当前线程会出现异常:java.lang.InterruptedException

方法join(long)的使用

        方法join(long)中的参数是设定等待的时间。

join(2000)和sleep(2000)的区别

        主要体现在对同步的处理上。

        方法join(long)的功能在内部是使用wait(long)方法来实现的,所以join(long)方法具有释放锁的特点。而方法Thread.sleep(lo

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walter Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值