InterruptedException、线程复位、sleep和wait对比

Object:
void wait()相当于wait(0),无超时时间。
void wait(long timeout),timeout单位毫秒。
void wait(long timeout, int nanos),timeout单位毫秒,nanos为增加的纳秒。

Thread:
void sleep(long millis),timeout单位毫秒。
void sleep(long millis, int nanos),timeout单位毫秒,nanos为增加的纳秒。
void join(long millis)
void join(long millis, int nanos)
void join()相当于join(0),无超时时间。

BlockingQueue:
void put(E e)
boolean offer(E e, long timeout, TimeUnit unit)
E take()
E poll(long timeout, TimeUnit unit)

执行这些方法时,如果线程标记中断(即interrupt()),会throws InterruptedException,然后线程复位:线程标记为非中断,线程继续执行。

sleep、wait对比:
1、sleep是线程中的方法,但是wait是Object中的方法。
2、sleep不会释放锁,但是wait会释放,而且将线程会加入到等待队列中。
3、sleep不依赖synchronized,但是wait依赖synchronized,object的wait必须用synchronized,而且对象锁是调用wait的object,否则报IllegalMonitorStateException。
4、sleep没有对应的唤醒方法,wait有,即notify()和notifyAll()。
5、sleep(0)表示不休眠,wait(0)表示一直等待,直至唤醒或者因被中断异常而线程复位。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风铃峰顶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值