java多线程之yeild学习

来源:互联网 发布:api数据接口 编辑:程序博客网 时间:2024/05/19 00:49

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资源

原创粉丝点击