zoukankan      html  css  js  c++  java
  • yiele函数

    1、概念:

    当调用Thread.yield()函数时,会给线程调度器一个当前线程愿意让出CPU使用的暗示,但是线程调度器可能会忽略这个暗示。

    2、实战。

    看下面例子

      

    public class yieldDemo {
        public static void main(String[] args) {
            Runnable yield = new Runnable() {
                @Override
                public void run() {
                    for (int i = 0; i <= 10; i++) {
                        System.out.println(Thread.currentThread().getName() + i);
                        if (i == 5) {
                            Thread.yield();
                        }
                    }
                }
            };
            Thread t1 = new Thread(yield,"A");
            Thread t2 = new Thread(yield,"B");
            t1.start();
            t2.start();
        }
    }
    

      上面例子所示,两个线程,各循环10以内的数字,每当执行到5 时,就会给程序调度器一个暗示,表示可以让出线程。程序执行结果如下:

    A0
    A1
    A2
    A3
    A4
    A5
    B0
    B1
    B2
    B3
    B4
    B5
    A6
    A7
    A8
    A9
    A10
    B6
    B7
    B8
    B9
    B10
    
    Process finished with exit code 0
    

      可以多执行几次,可以看到每次执行结果,不一定是到5了让出资源,可能会一直执行下去,表示虽然给程序调度器暗示可以让出资源,但是资源调度器却忽略了这个暗示。

    总结:

    yield 和 sleep 的异同
    1)yield, sleep 都能暂停当前线程,sleep 可以指定具体休眠的时间,而 yield 则依赖 CPU 的时间片划分。

    2)yield, sleep 两个在暂停过程中,如已经持有锁,则都不会释放锁资源。

    3)yield 不能被中断,而 sleep 则可以接受中断。

    想要飞得更高,就该忘记地平线!
  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/shenwen/p/11294897.html
Copyright © 2011-2022 走看看