zoukankan      html  css  js  c++  java
  • wait()和sleep()、sleep()和yield()的区别

    wait()和sleep()的区别主要表现在一下几个方面:

    1. 原理不同sleep()方法是Thread类的静态方法,是线程用来控制自身流程的。它会使线程暂停执行一段时间,把执行机会让给其他线程,等到时间一到,此线程会自动“苏醒”; wait()方法是Object类的方法,用于线程间的通信。它会使当前拥有改对象锁的进程等待,直到其他进程调用notify()或notifyALL(),不过开发人员也可以指定一个时间自动“醒”来。
    2. 对锁的处理机制不同。调用sleep()方法并不会释放锁;而调用wait()方法,线程会释放掉它所占用的锁。
    3. 使用区域不同wait()方法必须放在同步控制方法或同步语句块中使用;sleep()方法可以放在任何地方使用。
    4. sleep()方法必须捕获异常,而wait()方法不需要捕获异常。

          一般情况下,不推荐使用sleep()方法,而推荐使用wait()方法。

    sleep()和yield()的区别:

    1. sleep()方法给其它线程运行时,不考虑线程的优先级;而yield()方法只会给相同优先级或更高优先级的线程运行的机会。
    2. 执行sleep()方法后会转入阻塞状态,所以线程在指定的时间内肯定不会被执行;而yield()只是使当前线程重新回到可执行状态,所以线程有可能在进入到可执行状态后马上又被执行。
    3. sleep()方法声明抛出InterruptedException;而yield()没有声明任何异常
    4. sleep()方法比yield()方法具有更好的可移植性
  • 相关阅读:
    mysql在windows下备份&恢复数据库语句
    Postman(三)、获取响应数据
    LoadRunner(八)、常用的接口压测格式
    LoadRunner(七)、集合点
    LoadRunner(六)、事务
    LoadRunner(五)、参数化之文本参数化
    repmgr安装使用
    PostgreSQL 游标的种类
    win server 2019 资源管理器 内存占用高
    给MySQL中某表增加一个新字段,并设为主键值为自动增长。
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6567172.html
Copyright © 2011-2022 走看看