zoukankan      html  css  js  c++  java
  • 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()只能使同优先级的线程有执行的机会。

  • 相关阅读:
    第一章-环境准备
    selenium-pageobject设计模式
    自动化测试用例设计原则
    selenium隔离环境安装、以及示例
    json extractor获取返回值中动态新增的数据
    jmeter返回值乱码问题
    liunx命令
    SQL表结构语句
    测试网络脚本python
    C# 订单流水号生成
  • 原文地址:https://www.cnblogs.com/x_wukong/p/3442144.html
Copyright © 2011-2022 走看看