java多线程之yeild学习

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

你可能感兴趣的:(java多线程)