一、sleep()、yield()、wait()、join()的区别
1.sleep() 释放CPU,不释放锁
使当前线程进入阻塞状态,指定时间内不会执行。
2.yield() 释放CPU,不释放锁
使当前线程回到可执行状态,有可能出现回到可执行状态又马上可以执行的情况。yield只能使同级优先级或者更高有优先级的线程有执行的机会。
3.wait() 释放CPU,释放锁
调用对象的wait方法之后,需要荣国notify()或者notifyAll()方法来唤醒。
调用对象的wait()、notify()、notifyAll()的前提是:当前线程必须持有该对象的锁,所以这三个方法必须在synchronized函数或synchronized block中进行调用。
4.join() 释放CPU,释放锁
等待调用join()方法的线程执行结束,再接着往下执行。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步