• java Thread方法解析: sleep join wait notify notifyAll


    转载自:

    sleep(),yield(),wait()区别详解:http://dylanxu.iteye.com/blog/1322066

    join方法详解:http://www.open-open.com/lib/view/open1371741636171.html

    java线程:http://blog.csdn.net/wsl211511/article/details/51090633

    区别说明:

    sleep(millSec) 方法:使方法所属线程暂停millSec毫秒(进入【阻塞态】),使得其它【就绪态】线程(低优先级的也有机会)有机会被执行,但是不会释放对象锁

    yield()方法:使当前线程进入【就绪态】,让同优先级的线程具有被执行的机会,自己也有可能会被立即再次分配时间片。

    a_thread.join()方法:使当前线程等待a_thread线程执行完成后再执行,当前线程进入【阻塞态】,不会释放锁本质上是循环调用wait方法,因此也会释放线程的monitor

    obj.wait()方法:暂停方法所属线程并释放对象锁,同时使方法所属线程进入【等待池,直到obj的notify()或者notifyAll()方法被调用时,才有机会从【等待池】中被移到【锁标志等待池】中(只有锁标志等待池中线程能够获取锁标志),线程必须是拥有obj的monitor时才可以调用,否则会抛出异常。

    obj.notify()方法:从【等待池中移走一个线程放入【锁标志等待池】中,线程必须是拥有obj的monitor时才可以调用,否则会抛出异常。

    obj.notifyAll()方法:将【等待池】中的所有线程移到【锁标志等待池】中,线程必须是拥有obj的monitor时才可以调用,否则会抛出异常。

  • 相关阅读:
    CSU 1122
    CSU 1256
    CSU 1240
    HDU 1874
    CSU 1004
    Problem F CodeForces 16E
    Problem E CodeForces 237C
    Problem C FZU 1901
    12-30
    2016-12-29
  • 原文地址:https://www.cnblogs.com/wrencai/p/5648416.html
Copyright © 2020-2023  润新知