sleep()和wait()
相同点:
让当前线程让出CPU资源,并处于阻塞状态。
不同点:
1、sleep()是Thread类的方法,wait()是Object类的方法;
2、sleep()需要指定参数,wait()不需要参数;
3、sleep()到时间后自动处于可运行状态,wait()方法需要另一个线程通过notify()或者notifyAll()方法将其唤醒;
4、sleep()方法的调用线程不需要拥有锁资源,wait()方法的线程在有锁资源的情况下调用。
sleep()和yield()
相同点:
1、让当前线程让出CPU资源;
2、都是Thread类的静态方法;
不同点:
1、sleep()需要指定参数。yield()方法不需要参数;
2、sleep()在指定时间内线程处于阻塞状态等时间结束后才处于可运行状态,yield()让出资源的线程直接处于可运行状态;
3、sleep()处于可运行状态时不涉及线程优先级,和其他线程公平竞争资源,而yield()是为了让同级别或者更高优先级的线程先获取资源。
wait()和yield()
相同点:
1、都让当前线程让出CPU资源;
2、可以不指定参数;
不同点:
1、yield()是Thread类的方法,wait()是Object类的方法;
2、yield()让出资源后自动处于可运行状态,wait()方法需要另一个线程通过notify()或者notifyAll()方法将其唤醒;
3、yield()方法的调用线程不需要拥有锁资源,wait()方法的线程在有锁资源的情况下调用。