java线程那点事
java线程有五种状态:新建状态、就绪状态、运行状态、阻塞状态和死亡状态。
Object类中有wait()、notify()、notifyall()方法:
wait():将线程从“运行状态”变为“阻塞状态”,线程会被放到线程池中。
notify():唤醒“阻塞状态”的线程为“就绪状态”,唤醒线程池队列中第一个线程。
notifyAll():唤醒线程池队列中的所有“阻塞状态”线程为“就绪状态”。
调用wait()时,线程进入等待阻塞状态,并且会释放获得的锁
调用sleep()/join(),线程进入阻塞状态,不会释放获得的锁。
调用yield()方法,线程从“运行状态”进入“就绪状态”,并且不会释放获得的锁。