java多线程之yeild学习

xiaoxiao2021-02-27  227

Thread.yeild()

    让出CPU资源,使线程从运行状态变为就绪状态,和其他线程回到同一起跑线,让CPU重新选择,还有可能会被再一次选中。

    实例:

  

package com.zw; public class ThreadTest { public static void main(String[] args) { ThreadOne threadOne = new ThreadOne(); ThreadOne threadTwo = new ThreadOne(); Thread thread = new Thread(threadOne); Thread thread1 = new Thread(threadTwo); thread.start(); thread1.start(); } } class ThreadOne implements Runnable { @Override public void run() { for (int i = 0; i < 50; i++) { System.out.println(Thread.currentThread().getName() + " " + i); if(i == 30) { Thread.yield(); System.out.println(Thread.currentThread().getName() + " 暂停 " + i); } } } }

输出结果:

    Thread-0       0 Thread-1       0 Thread-0       1 Thread-1       1 Thread-1       2 Thread-0       2 Thread-0       3 Thread-0       4 Thread-0       5 Thread-0       6 Thread-0       7 Thread-0       8 Thread-0       9 Thread-0       10 Thread-0       11 Thread-0       12 Thread-0       13 Thread-0       14 Thread-0       15 Thread-0       16 Thread-0       17 Thread-1       3 Thread-0       18 Thread-1       4 Thread-1       5 Thread-1       6 Thread-0       19 Thread-1       7 Thread-0       20 Thread-1       8 Thread-0       21 Thread-1       9 Thread-0       22 Thread-1       10 Thread-0       23 Thread-1       11 Thread-0       24 Thread-1       12 Thread-0       25 Thread-1       13 Thread-0       26 Thread-1       14 Thread-0       27 Thread-1       15 Thread-0       28 Thread-1       16 Thread-0       29 Thread-1       17 Thread-0       30 Thread-1       18 Thread-0 暂停    30 Thread-1       19 Thread-0       31 Thread-1       20 Thread-0       32 Thread-1       21 Thread-0       33 Thread-1       22 Thread-0       34 Thread-1       23 Thread-0       35 Thread-1       24 Thread-0       36 Thread-1       25 Thread-0       37 Thread-1       26 Thread-0       38 Thread-1       27 Thread-0       39 Thread-1       28 Thread-0       40 Thread-0       41 Thread-0       42 Thread-0       43 Thread-0       44 Thread-0       45 Thread-0       46 Thread-0       47 Thread-0       48 Thread-0       49 Thread-1       29 Thread-1       30 Thread-1 暂停    30 Thread-1       31 Thread-1       32 Thread-1       33 Thread-1       34 Thread-1       35 Thread-1       36 Thread-1       37 Thread-1       38 Thread-1       39 Thread-1       40 Thread-1       41 Thread-1       42 Thread-1       43 Thread-1       44 Thread-1       45 Thread-1       46 Thread-1       47 Thread-1       48 Thread-1       49

从上面输出结果可以看出共分为两种情况:

1、线程0从运行状态变为就绪状态,线程1拿到CPU资源

2、线程1从运行状态变为就绪状态,紧跟着线程1又拿到了CPU资源

转载请注明原文地址: https://www.6miu.com/read-8880.html

最新回复(0)