线程的yield()方法

时间:2021-07-01 23:31:57

进程主动放弃CPU,注意:是放弃片刻,不是放弃到其他进程执行完毕。

 1 import java.util.*;
2 public class ThreadDemo {
3 public static void main(String[] args) {
4 MyThread mt = new MyThread();
5 mt.start();
6 for(int j = 0;j<10;++j) {
7 System.out.println("i am main Thread " + j);
8 try {
9 Thread.sleep(500);
10 }catch(InterruptedException e) {
11 return;
12 }
13 }
14 }
15 }
16
17 class MyThread extends Thread {
18 public void run() {
19 for(int i = 0;i < 10;++i) {
20 System.out.println("i am MyThread " + i);
21 for(int k = 0;k < 5000000;++k) {
22 Thread.yield();
23 }
24 }
25 }
26 }

线程的yield()方法

第21行代码改成k < 50000时运行结果,这是因为子进程MyThread让出50000*10次 yield()也不足500ms。

线程的yield()方法

第21行是k < 5000000时的运行结果,子线程MyThread让出5百万*10次yield()CPU的时间,超过500ms,所以交替输出。