【转载】java sleep和wait的区别的疑惑?

【转载】java sleep和wait的区别的疑惑?

首先,要记住这个差别,“sleep是Thread类的方法,wait是Object类中定义的方法”。尽管这两个方法都会影响线程的执行行为,但是本质上是有区别的。

  • Thread.sleep不会导致锁行为的改变,如果当前线程是拥有锁的,那么Thread.sleep不会让线程释放锁。如果能够帮助你记忆的话,可以简单认为和锁相关的方法都定义在Object类中,因此调用Thread.sleep是不会影响锁的相关行为。
  • Thread.sleep和Object.wait都会暂停当前的线程,对于CPU资源来说,不管是哪种方式暂停的线程,都表示它暂时不再需要CPU的执行时间。OS会将执行时间分配给其它线程。区别是,调用wait后,需要别的线程执行notify/notifyAll才能够重新获得CPU执行时间。
  • 线程的状态参考 Thread.State的定义。新创建的但是没有执行(还没有调用start())的线程处于“就绪”,或者说Thread.State.NEW状态。
  • Thread.State.BLOCKED(阻塞)表示线程正在获取锁时,因为锁不能获取到而被迫暂停执行下面的指令,一直等到这个锁被别的线程释放。BLOCKED状态下线程,OS调度机制需要决定下一个能够获取锁的线程是哪个,这种情况下,就是产生锁的争用,无论如何这都是很耗时的操作。

     

    作者:孙立伟
    链接:https://www.zhihu.com/question/23328075/answer/24228413
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

    发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119351.html原文链接:https://javaforall.net

    (0)
    全栈程序员-站长的头像全栈程序员-站长


    相关推荐

    • 电容与部分电容_接地电容不能太大

      电容与部分电容_接地电容不能太大转载自:http://emakerzone.com/article/229关键字:薄膜电容,电解电容,陶瓷电容,铝电解电容,钽电容,安规电容之前的文章中,介绍了电感的一些知识。本文将谈谈电容,介绍电容的知识和如何选型。一、电容的基本原理电容,和电感、电阻一起,是电子学三大基本无源器件;电容的功能就是以电场能的形式储存电能量。以平行板电容器为例,简单介绍下电容的基本原理如…

      2022年8月22日
      7
    • MySQL数据库:游标Cursor

      MySQL数据库:游标Cursor

      2021年10月4日
      65
    • Django之模板语法

      注:以下内容转载自:https://www.cnblogs.com/haiyan123/p/7725568.html一、模板语法之变量:语法为{{}}:在Django模板中遍历复杂数据结构

      2021年12月29日
      41
    • 捷达vs7与VS5是一个平台打造_visual studio没有控制台应用程序

      捷达vs7与VS5是一个平台打造_visual studio没有控制台应用程序我正在使用VisualStudioTeamServices(是VSOnline)。我从VisualStudio2013升级到了VisualStudio2015。当我打开源代码管理项目时,出现以下错误:您已加载的解决方案已绑定到https://xx.visualstudio.com/defaultcollection上的源控制服务器,但该服务器上没有任何工作空间可以找到服务器。如果您确…

      2022年8月12日
      10
    • BM3D 图像去噪

      BM3D 图像去噪BM3D图像去噪论文:Imagedenoisingbysparse3-Dtransform-domaincollaborativefiltering代码:python代码介绍:图像去噪算法:BM3D 加性噪声方程,其中噪声η\etaη常常用均值为0的高斯噪声近似表示: BM3D去噪算法结合了空间算法非局部去噪方法Non-localmethod,和转换算法transformmethod。算法主要分两步,每一步又分为三小步:相似块分组、协同滤波和聚合。.

      2022年5月9日
      38
    • jdbctype=null_could not get jdbc connection

      jdbctype=null_could not get jdbc connectionresultMap中映射没注意jdbcType类型直接报错:Cause:org.apache.ibatis.builder.BuilderException:ErrorresolvingJdbcType.Cause:java.lang.IllegalArgumentException:Noenumconstantorg.apache.ibatis.type.JdbcType.int随后检查XML文件映射问题,发现应该是INTEGER,jdbcType中没有int。附上MyBat.

      2022年10月20日
      1

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    关注全栈程序员社区公众号