java中Thread的sleep() 与yield()区别,yield()与join()区别

sleep() 与yield()
1.sleep()方法给其他线程运行机会的时候,不考虑线程的优先级,因此当高优先级线程sleep()后,低优先级任务有机会运行;但是yield()只会给同优先级或更高优先级线程运行的机会,甚至可能是自己继续运行

2.线程调用sleep()后,转入阻塞状态,而调用yield()后转入了就绪状态。

3.sleep方法声明抛出InterruptedException,它会在run()中被捕获,因为异常不能跨线程传播回main。而yield没有声明任何异常

4.sleep()方法比yield()具有更好的移植性

5:Java SE5中引入更加显示的sleep()版本,作为TimeUnit类的一部分,可以通过TimeUnit.MILLISECONDS.sleep(int)方法指定延迟的时间单元。

yield()与join()
join()方法的作用是让"主线程"等待"子线程"结束之后才能继续进行

yield()方法的作用是可以暂停当前正在执行的线程对象,让其他相同优先级的线程执行。它是一个静态方法而且只保证当前线程放弃CPU,而不保证使其他线程一定占用CPU,执行yield()的线程可能在进入到暂停状态后马上又被执行

猜你喜欢

转载自blog.csdn.net/weixin_43916777/article/details/104187290