Thread sleep()和yield()方法的区别

1. sleep() 方法和 yield() 方法的作用

sleep():使线程休眠指定的时间,该方法不会释放当前线程的monitor锁。

yield():提醒cpu当前的线程愿意释放当前的CPU资源,如果CPU资源不紧张,CPU会忽略掉这个提醒,如果CPU没有忽略这个提醒,然后将该线程的状态更新为RUNNABLE

2. 方法的区别

  • sleep() 会导致当前线程暂停指定的时间,没有CPU时间片的消耗;
  • yield() 只是给CPU提醒该线程愿意暂时释放CPU资源,CPU资源不紧张的时候,会忽略掉这个提醒;若CPU没有忽略掉这个提醒,它会导致线程的应用上下文的切换;
  • sleep() 会导致线程的阻塞(block),会在给定的时间内释放CPU资源;
  • yield() 会导致RUNNING状态的线程进入 RUNNABLE (如果CPU没有忽略掉这个提醒);
  • sleep() 方法会百分之百的执行让线程暂停指定的时间,但 yiled() 方法的时候收到 CPU 资源的影响,并不会百分百的发生;
  • 一个线程sleep()另一个线程调用 interrupte 会捕捉到中断的信号,而yield不会;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值