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()方法具有更好的可移植性

wait()和sleep()、sleep()和yield()的区别的更多相关文章

  1. 多线程学习-基础(五)sleep()和yield()的区别(理论)

    一.sleep()和yield()的区别 (1)sleep()使当前线程进入停滞状态(即阻塞状态),所以执行sleep()的线程在指定的时间内不会被执行: (2)yield()只是使当前线程从运行状态 ...

  2. 016 sleep,wait,yield,join区别

    1.线程通常有五种状态,创建,就绪,运行.阻塞和死亡状态.2.阻塞的情况又分为三种:(1).等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中.进入 ...

  3. 关于多线程中sleep、join、yield的区别

    好了.说了多线程,那就不得不说说多线程的sleep().join()和yield()三个方法的区别啦 1.sleep()方法 /** * Causes the currently executing ...

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

    转自:http://developer.51cto.com/art/201003/189465.htm 1. Thread.yield():     api中解释: 暂停当前正在执行的线程对象,并执行 ...

  5. python中print,return和yield的区别

    def func1(): for i in range(1, 5): print i def func2(): for i in range(1, 5): return i def func3(): ...

  6. Laravel Blade 模板 @section/endsection 与 @section/show, @yield 的区别

    base layout 中需要使用 @section("section_name") 区块链是什么? @show 继承的 blade 中需要使用 @section("se ...

  7. 线程的sleep()方法和yield()方法区别

    1.sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会 2.yield()方法只会给相同优先级或更高优先级的线程以运行的机会 3.线程执行sleep()方法后 ...

  8. java多线程sleep,wait,yield方法区别

    sleep() 方法sleep()的作用是在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行).这个“正在执行的线程”是指this.currentThread()返回的线程.sleep方法有两个重 ...

  9. return和yield的区别

    # return 返回给调用者值,并结束此函数.#yiled 返回给调用者值,并将指针停留着当前位置.

随机推荐

  1. Windows里服务中没有 MySQL

    1.以管理员身份启动命令提示符 2.安装并启动MySQL服务 C:\Windows\system32>mysqld.exe -installService successfully instal ...

  2. 碎片记录——JMeter之 http post json对象与参数化调用,以及beanshell 引用Java源码

    参考文档 http://jmeter.apache.org/usermanual/component_reference.html#samplers https://blog.csdn.net/qq_ ...

  3. 【leetcode】1052. Grumpy Bookstore Owner

    题目如下: Today, the bookstore owner has a store open for customers.length minutes.  Every minute, some ...

  4. Python3及Pycharm安装

    1.首先去python官网下载相应版本的Python安装包.如下: 2.下载完成后解压,双击exe文件进行安装,看到如下界面:Install Now表示默认安装:Customize installat ...

  5. plafrom SDK

    { //http://www.alipay-seller.mpymnt.com/node/82 //https://blog.csdn.net/xiaopingping1234567/article/ ...

  6. 手动ubuntu 18.04修改登录锁屏界面效果(含登录背景修改)flat-remix

    前言 在ubuntu 18.04,可以通过修改/etc/alternatives/gdm3.css来进行修改 本来想直接使用flat-remix主题,但是只有这个登录界面没有达到作者演示的效果,所以手 ...

  7. R语言预测实战(第一章)

    本例使用forecast包中自带的数据集wineind,它表示从1980年1月到1994年8月, 由葡萄酒生产商销售的容量不到1升的澳大利亚酒的总量.数据示意如下: #观察曲线簇 len=1993-1 ...

  8. linux find rm ls 逻辑非运用

    需求场景描述 查找出除已知文件外的文件 办法: [root@VM_58_118_centos test]# .1_fv1..0_pv1..6_15752678845473..2_fv1..4_pv1. ...

  9. jquery easyui控件事件监听委托给jquery事件监听,keyup取最新值问题

    <div id="<?php echo NS; ?>toolbar"> <div style="padding:5px"> ...

  10. PHP Timer 页面运行时间监测类

    转至:http://blog.csdn.net/fdipzone/article/details/20160567 php Timer 页面运行时间监测类,可按不同key监测不同的运行时间 Timer ...