【多线程 - 06、线程优先级与线程让步 yield】

改变线程优先级

每个线程在执行时都具有一定的优先级,优先级高的线程获得较多的执行机会,而优先级低的线程则获得较少的执行机会。

每个线程默认的优先级都与创建它的父线程的优先级相同,在默认情况下,main线程具有普通优先级(5),由main线程创建的子线程也具有普通优先级。

java 中的线程优先级的范围是1~10,1的优先级最低,10的优先级最高。

通过setPriority()方法,可以改变线程的优先级。

注意

在多线程中线程的执行顺序是依靠哪个线程先获得到CUP的执行权谁就先执行,虽然说可以通过线程的优先权进行设置,但是他只是获取CUP执行权的概率高点,但是也不一定必须先执行

线程让步 yield

Thread中有一个线程让步方法yield(),作用就是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!

说明

yield()虽然可以让线程由“运行状态”进入到“就绪状态”;但是,它不一定会让其它线程获取CPU执行权(即,其它线程进入到“运行状态”),即使这个“其它线程”与当前调用yield()的线程具有相同的优先级。在多CPU并行的环境下,yield方法的功能有时候不明显,可能看不到效果。

你可能感兴趣的:(多线程,开发语言,java)