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

使用场景        

        在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束,这时,如果主线程向等待子线程执行完成后再结束,就需要用到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(long)却不释放锁。

        join()源码如下:

    public final synchronized void join(long millis)
    throws InterruptedException {
        long base 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Walter Sun

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

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

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

打赏作者

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

抵扣说明:

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

余额充值