1.3 线程的优先级
多个线程的执行是有一定的优先级别的,对于下面这个例子:
public class RunnablePotato implements Runnable {
public void run() {
while (true)
System.out.println(Thread.currentThread().getName());
}}
public class PotatoThreadTester {
public static void main(String argv[]) {
RunnablePotato aRP = new RunnablePotato();
Thread T1 = new Thread(aRP, "one potato");
Thread T2 = new Thread(aRP, "two potato");
T1.start();
T2.start();
}}
对于非抢占式的系统,上例中的第一个线程会一直运行,第二个线程没有机会运行;对于抢占式的系统,这二人线程会交替运行。
为了让多线程在非抢占式中运行,最好在run方法中加入以下语句:
Thread.yield()
即
public void run() {
while (true)
System.out.println(Thread.currentThread().getName());
Thread.yield()
}
Thread.yield会将当前线程暂时让位一小段时间,让其它的线程有机会运行,过了这段时间后,该线程继承运行。上述功能也可以用Thread.sleep()方法实现。
文章来源于领测软件测试网 https://www.ltesting.net/