简单理解java线程中sleep和Object中wait的区别

@TOC

从四个方面理解sleep方法和wait方法的不同

在这里插入图片描述

(1)类上的不同

sleep方法是属于Thread类中的方法,要使用该方法就必须得继承Thread或实现接口Runable。而wait方法是属于Object类中的方法。

(2)方法调用上的不同

在方法的调用上,sleep是一个静态方法,通过类名调用。wait不是静态方法,通过对象来调用

(3)唤醒线程的方式不同

列如:在线程调用sleep(2000),则表示调用该方法的线程则会停止工作2秒,停止的期间不会释放锁,2秒过后自动继续开始执行未完的任务,无需有人去唤醒它。但是wait不同,如wait(2000),则表示当前哪个线程调用它,则该线程会停止工作2秒,停止的期间会释放锁,2秒过后不会自动继续执行未完成的任务,需要人为的调用Object方法中的notify/notifyAll方法来唤醒它,但唤醒后也只是进入就绪状态,直到有CPU资源才重新运行。

(4)sleep和wait进行执行锁的过程理解不同

sleep方法是哪个位置调用,就哪个线程等待。wait方法是对象调用时,访问对象的其他线程等待。
如:对象.wait()的时候并不是该对象会进行线程等待,而是访问当前这个对象的线程进行等待。
类.sleep()的时候则是这个类的对象进行睡眠等待,而不是访问线程进行等待。
举个例子就如:A和B去商店买东西,此时商店调用了sleep方法,就表示商店自己暂时打烊了,如果此时商店调用的是wait方法的话,正好A此时来买东西,商店让A进行等待。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值