多线程——join()、sleep()

本文详细分析了Java中的多线程方法join()和sleep(),包括它们的源码、区别及作用。join()方法通过调用wait()使得调用线程等待目标线程结束,而sleep()方法则不释放锁,主要用于暂停线程执行。通过实例展示了join()如何实现线程依次执行,以创建连续的ABC输出。
摘要由CSDN通过智能技术生成

Thread类的方法中有一个join()方法,它是普通的实例方法,根据Java api,该方法有如下三种形式:

void join(): Waits for this thread to die.
void join(long millis): Waits at most millis milliseconds for this thread to die.
void join(long millis, int nanos): Waits at most millis milliseconds plus nanos nanoseconds for this thread to die.

该方法的作用是“等待该线程终止”,一直等待,直到程终止,而带参数的方法的作用是“ 等待该线程终止,至多等待多少毫秒数 (或毫秒数+纳秒数)”。

在此之前,我对这个方法一直有两个疑问,困惑不解:

  1. 为什么这个方法的作用是等待该线程终止,为什么它的名字是“加入”的意思?
  2. 在这个等待的关系中,到底是谁等待谁?

在看了很多人的博客、看了这个方法的源码、看了《Java多线程编程核心技术》这本书和实践之后,我的理解如下,作为自我学习总结。


1. join()的源码分析

public final 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值