问答详情
源自:3-1 线程的生命周期

sleep()不会放弃cpu资源

错了吧?调用sleep()方法,是一直占有着cpu,不会放弃cpu的。用wait()方法才可以进入阻塞,让出cpu,等待notify()唤醒。

提问者:net_liufei 2015-04-11 13:54

个回答

  • passionfoure
    2015-05-26 00:08:35
    已采纳

    执行线程sleep方法是依然占着cpu的,操作系统认为该当前线程正在运行,不会让出系统资源。

    执行wait方法是让线程到等待池等待,让出一系列的系统资源,其他线程可以根据调度占用cpu

  • 夜愿小夜
    2016-06-02 14:09:40

    线程的资源有不少,但应该包含CPU资源和锁资源这两类。

    sleep(long mills):让出CPU资源,但是不会释放锁资源。

    wait():让出CPU资源和锁资源。

    锁是用来线程同步的,sleep(long mills)虽然让出了CPU,但是不会让出锁,其他线程可以利用CPU时间片了,但如果其他线程要获取sleep(long mills)拥有的锁才能执行,则会因为无法获取锁而不能执行,继续等待。

    但是那些没有和sleep(long mills)竞争锁的线程,一旦得到CPU时间片即可运行了。

  • 快乐不假
    2016-04-19 21:23:44

    我的java书上说:sleep(long mills)是会让出CPU的

  • 孤月独舞
    2015-06-14 20:48:58

    估计你把资源和锁搞错了  

  • Mr__Lim
    2015-05-04 16:29:34

    不会的。