Contents
20.4. 线程让步¶
线程类Thread还提供一个静态方法yield(),调用yield()方法能够使当前线程给其他线程让步。它类似于 sleep()方法,能够使运行状态的线程放弃CPU使用权,暂停片刻,然后重新回到就绪状态。
与sleep()方法不同的是,sleep()方法是线程进行休眠,能够给其他线程运行的机会,无论线程优先级高低都有机 会运行。
而yield()方法只给相同优先级或更高优先级线程机会。
package com.a51work.cn;
/**
* 使用Runnable接口创建多线程
*/
public class Runner_Rangbu implements Runnable {
// 方法覆盖
@Override
public void run() {
for (int i = 0; i < 10; i++) {
//打印次数和线程的名字
System.out.printf("第%d次执行 - %s\n", i, Thread.currentThread().getName());
//调用yield()方法能够使当前线程给其他线程让步
Thread.yield();
}
try {
//随机生成休眠时间
long sleepTime = (long) (10000 * Math.random());
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
//线程执行结束
System.out.println("执行完成!" + Thread.currentThread().getName());
}
public static void main(String[] args) {
// 创建线程t1,参数是一个线程执行对象Runner
Thread t1 = new Thread(new Runner_Rangbu());
//开始线程t1
t1.start();
// 创建线程t2,参数是一个线程执行对象Runner
Thread t2 = new Thread(new Runner_Rangbu(),"hujianli-Thread");
//开始线程t1
t2.start();
}
}
/*
yield()方法只能给相同优先级或更高优先级的线程让步,yield()方法在实际开发中很少使用,大多都使用sleep()方法,sleep()方法可以控制时间,而yield()方法不能。
* */