• 技术文章 >java >java基础

    java yield()和sleep()的区别

    小妮浅浅小妮浅浅2021-08-03 09:34:52原创4354

    区别

    1、sleep()会导致当前线程暂停指定的时间,没有CPU时间片的消耗

    2、yield()只是对CPU调度器的一个提示,如果CPU调度器没有忽略这个提示,会导致线程上下文的切换

    sleep()会使线程短暂阻塞,在给定时间内释放CPU资源

    如果yield()生效,yield()会使得从RUNNING状态进入RUNNABLE状态

    sleep()会几乎百分百地完成给定时间的休眠,但是yield()的提示不一定能担保

    一个线程调用sleep()而另一个线程调用interrupt()会捕获到中断信号,而yield则不会

    实例

    package cn.hanquan.test;
    /*
     * sleep模拟倒计时,每一秒减一
     */
    public class Lambda {
    public static void main(String[] args) {
     
    // Labmda表达式
    new Thread(() -> {
    for (int i = 0; i < 100; i++) {
    System.out.println(i);
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }).start();
    }
    }

    以上就是java yield()和sleep()的区别,希望对大家有所帮助。更多Java学习指路:Java基础

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    专题推荐:java yield sleep
    上一篇:java中使用全局变量终止线程 下一篇:java setPriority()设置优先级

    相关文章推荐

    • Java守护线程和用户线程的区别• Java Executors中的四种线程池• Java runnable和callable的异同• java sleep()和wait()的区别• java泛型接口的使用注意• java方法参数中通配符的使用• java网络编程的三要素• java UDP通信的原理• java中UDP如何发送数据• java中UDP接收数据的步骤• java中TCP通信是什么• java中并发和并行的概念

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网