java后端面经--sleep,wait,yield,join的区别

四者都是将,线程暂定,休息,中断,等待。

1,锁池:所有需要竞争同步锁的线程都会放到锁池中。得到同步锁后就会进入就绪队列进行cpu资源分配

2,等待池:调用了wait()后,线程被放到等待池中。只有调用了notify()或notifyAll(),线程才会去竞争同步锁。

sleep(原理:把cpu的执行资格权利释放出去,过了休眠时间再收回,即使该线程有锁,sleep了也不会释放锁)

sleep和wait区别:

1,sleep是Thread的静态本地方法,wait是Object类的本地方法

2,sleep方法不会释放lock,但是wait会释放。

3,sleep不依赖于同步器(synchronize),但是wait需要依赖。

4,sleep不需要被唤醒,但是wait要

5,sleep一般用于当前线程休眠,轮循暂停,wait则多用于多线程中的通信

6,sleep 会让出cpu执行时间,且强制上下午切换,而wait不一定,还有机会进行竞争同步锁

yield执行后,线程从运行状态进入就绪状态,释放cpu的执行权,(将全力给回cpu),但是依然保留cpu的执行资格,所以有可能cpu下次还有可能让该线程执行

join执行后,线程进入阻塞状态。线程b调用a的join(),b进入阻塞队列,知道线程a结束才能运行b。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值