多线程的sleep和wait

sleep 方法 和 wait 方法

sleep 是占着cpu睡觉,(更通俗的说是继续占着毛坑,但在一定时间段内暂停拉屎)。当前线程 sleep 时,该线程继续持有资源和cpu执行权,其它线程不允许拥有cup。若不发生InterruptedException,该线程的沉睡时间是确定的,传入多少毫秒就是多少毫秒。沉睡时间一过,继续接着上次再执行(继续拉)。

sleep是静态方法,谁调用谁睡觉。就算在main线程里调用了A线程的sleep()方法,而实际上还是main线程在睡觉。如果要让线程A去睡觉,必须在A的代块中调用sleep方法。

wait() 方法往往与notify 或 notifyAll成对出现。当前线程调用它时,该线程释放所持有的资源(即让出资源)和cup执行权,转移到线程池中等待,此时其它线程可以获得cpu执行权。当某个正在执行的线程调用notify 或 notifyAll时,将它或其它的同在线程池中的所有线程唤醒,它们共同进入就绪序列等待os(操作系统)分配资源。

wait( long n ), Cause the current thread to wait nutil either another thread invokes notify() or notifyAll() method for this object, or a specified amount time has elapsed.

当前线程调用 wait( long n ) 方法时,其它的线程可以将其唤醒,回到就绪序列中等待os分配资源,即使未到指定的时间(即传入的参数n )也可以。如果未notify或notifyAll,在指定时间一到也可以加到就绪序列,等待os分配资源。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值