1、Sleep:
sleep的作用是让目前正在执行的线程休眠,让CPU去执行其他线程。线程的状态变成阻塞状态。
注意:sleep会发生线程中断异常;sleep不会释放锁。
2、Wait:
wait必须先获得对应的锁才能调用,它让线程进入等待状态,释放当前线程持有的锁,线程只有在其他线程调用notify()或notifyAll()时,才可能被重新唤醒,抢夺CPU。
3、Join:
join是线程之间协同方式,他的使用场景为:
线程A必须等待线程B执行完毕后才可以执行,那么就在线程A的代码中加入:
ThreadB.join();
就是让线程B抢占资源去执行,此时A处于等待状态。
4、Yield:
yield让当前线程从运行中状态回到就绪状态,是让出CPU的方式。
它允许具有相同优先级的其他线程可以有机会获得运行的机会。