java的线程问题--sleep和wait

Java线程的sleep和wait有共同的作用,就是都能使当前线程任务停止,但是他们有很大的不同。

关于sleep和wait方法主要区别有:

 

1、这两个方法来自不同的类,sleep是Thread类的方法,wait是Object的方法。

2、sleep表示让一个线程进入睡眠,等待一定时间之后,自动醒来进入到可运行状态。等待进入运行态,不需要唤醒。

     wait是object的成员方法,一个对象调用了wait也能使线程停止,但是需要notify()或者notifyAll()唤醒进程。

3、sleep方法并不释放锁,而wait方法释放锁,可以使其他线程使用同步控制块或者方法。

     所以wait,notify,notifyAll 只能在同步控制方法或同步控制块里面使用。而sleep则没有限制。

4、sleep必须捕获异常,因为当一个线程在sleep过程中,可能有其他的方法调用它的interrupt,

     产生intertuptException  异常,如果不捕获这个异常,线程就会异常终止。进入terminated状态。

5、sleep是一个静态方法,只对当前对象有效,通过t.sleep想让t对象进入sleep是错误的,他只会使当前线程进入sleep.

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值