1.sleep()
sleep(): sleep 方法属于 Thread 类,该行为中线程不会释放锁,只阻塞线程,让出cpu给其他线程,当达到指定的时间后会自动恢复运行状态继续运行。
2.wait()
wait(): 该方法属于 Object 类,在这个过程里线程会释放对象锁,只有当其他线程调用 notify()或notifyAIl()才能唤醒此线程。wait 使用时必须先获取对象锁,如果没有在synchronized 修饰的代码块中使用时wait()方法运行时会抛出异常。
3.yield()
yield(): yield是 Thread 类中的方法,能够暂停当前正在执行的线程对象,不会释放资源锁,也被称为礼让线程,和 sleep 不同的是 yield方法并不会让线程进入阻塞状态,而是让线程重回就绪状态,使用该方法后,需要与其它线程再次重新争夺CPU,谁抢到谁执行。
4.join()
join(): 在当前线程中,只有等待所有调用join()方法的线程都执行完些后,当前线程才可以继续执行。一般用于等待异步线程执行完结果之后才能继续运行的情况中。通常谁调用,谁先完成执行。
5.notify()、notifyAll()
notify(): 唤醒某个当前对象锁等待的线程
notifyAll(): 唤醒所有当前对象锁等待的线程