yeild
一个调用yield方法的线程,是要告诉虚拟机它乐意让其他线程占用自己的位置,yield将当前线程由运行状态置为就绪状态,来达到让步的目的,但是刚进入就绪状态的线程也可能马上进入运行状态。
yield代码示例
public class YeildDemo {
class Thread1 extends Thread {
public Thread1(String name) {
super(name);
}
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(getName() + "第" + i + "次执行");
Thread.yield();
}
}
}
class Thread2 extends Thread {
public Thread2(String name) {
super(name);
}
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(getName() + "第" + i + "次执行");
Thread.yield();
}
}
}
public static void main(String[] args) {
YeildDemo demo = new YeildDemo();
Thread1 t1 = demo.new Thread1("线程1");
Thread1 t2 = demo.new Thread1("线程2");
t1.start();
t2.start();
}
}
上述代码在没有调用yeild方法的输出结果
线程1第0次执行
线程1第1次执行
线程1第2次执行
线程1第3次执行
线程1第4次执行
线程2第0次执行
线程2第1次执行
线程2第2次执行
线程2第3次执行
线程2第4次执行
上述代码在调用yeild方法的输出结果
线程2第0次执行
线程1第0次执行
线程2第1次执行
线程1第1次执行
线程2第2次执行
线程1第2次执行
线程2第3次执行
线程1第3次执行
线程2第4次执行
线程1第4次执行
当然上述结果只是其中的一种运行结果,但经过多次运行,大致就是上面的规律。