• Java编程语言中sleep()和yield()的区别


    转自:http://developer.51cto.com/art/201003/189465.htm

    1. Thread.yield(): 
        api中解释: 暂停当前正在执行的线程对象,并执行其他线程。 
        注意:这里的其他也包含当前线程,所以会出现1212以下结果。 
    public class Test extends Thread {    
      public static void main(String[] args) {    
        for (int i = 1; i <= 2; i++) {    
          new Test().start();    
        }    
      }    
       
      public void run() {    
        System.out.print("1");    
        Thread.yield();   //如果没有这句,输出结果一定是1212 
        System.out.print("2");    
      }    
    }   
        输出结果: 1122或者1212 

    2. Thread.sleep(long millis): 
         解释:使当前线程暂停millis所指定的毫秒,转到执行其它线程。 

    总结:

    1) sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。

    2) sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会;yield()只能使同优先级的线程有执行的机会。

  • 相关阅读:
    LiveCharts文档-3开始-1安装
    LiveCharts文档-2FAQ
    时间戳的简介
    LiveCharts文档-1前言
    做了一个串口读写温度的程序
    CsvHelper文档-6类型转换
    CsvHelper文档-5配置
    如何选择 .NET Framework目标版本
    CsvHelper文档-4映射
    CsvHelper文档-3写
  • 原文地址:https://www.cnblogs.com/x_wukong/p/3442144.html
Copyright © 2020-2023  润新知