Java中的wait()和sleep()方法 (wait() and sleep() methods in Java)

First, we will see how wait() method differs from sleep() method in Java?

首先,我们将看到wait()方法与Java中的sleep()方法有何不同?

wait()方法 (wait() Method)

  • This method is available in java.lang package.

    此方法在java.lang包中可用。

  • This method is used to pause a Thread in Java.

    此方法用于暂停Java中的线程。

  • This method is defined in Object class.

    此方法在Object类中定义。

  • This method releases the monitor or acquired the lock on that monitor while waiting.

    此方法在等待时释放监视器或获得该监视器的锁定。

  • wait() is a non-static method (i.e. instance method) so this method is accessible with the help of object class.

    wait()是一个非静态方法(即实例方法),因此可以在对象类的帮助下访问此方法。

  • Let suppose if our thread is waiting for execution so it wakes up at one condition is that when other calls notify() or notifyAll() method on the same object.

    让我们假设,如果我们的线程正在等待执行,那么它在一种情况下被唤醒的原因是,当其他线程在同一对象上调用notify()notifyAll()方法时。

  • This method is useful for inter-thread communication.

    此方法对于线程间通信很有用。

  • In case of wait() method, waiting thread does not go into Runnable state directly (i.e. If waiting thread wake up then it first acquired the lock then after goes into Runnable state)

    在使用wait()方法的情况下,等待线程不会直接进入Runnable状态(即,如果等待线程唤醒,则它首先获取了锁,然后进入Runnable状态)

  • This method will be called from synchronized context only (i.e. we can call this method from either synchronize method or synchronized block).

    仅从同步上下文调用此方法(即,我们可以从syncize方法或synced块调用此方法)。

  • In case of wait() method, Waiting for the thread will wait until a condition is true it is based on condition.

    如果使用wait()方法,则等待线程将一直等到条件为真(基于条件)。

  • The syntax of this method is given below :

    该方法的语法如下:

    final void wait(){}
    final void wait(long ms, int ns){}
    final void wait(long ms){}
    
    
  • This method is an overloaded method so we will see all the variations given below,

    此方法是重载方法,因此我们将看到下面给出的所有变化,

    1. wait()等待()
    2. wait(long ms)等待(长毫秒)
    3. wait(long ms, int ns)等待(长毫秒,整数ns)
  • We should go for wait() method if we want to wait for a certain condition.

    如果我们要等待某个条件,就应该使用wait()方法。

Second, we will see how sleep() method differs from the wait() method in Java?

其次,我们将看到sleep()方法与Java中的wait()方法有何不同?

sleep()方法 (sleep() Method)

  • This method is available in java.lang package.

    此方法在java.lang包中可用。

  • This method is used to pause a thread for a short duration in Java.

    此方法用于在Java中将线程暂停一小段时间。

  • This method is defined in Thread class.

    此方法在Thread类中定义。

  • This method does not release the monitor or acquired lock on that object while a thread is waiting.

    在线程等待时,此方法不会释放监视器或对该对象的获取锁定。

  • sleep() is a static method (i.e. class method) so this method is accessible with Classname.

    sleep()是静态方法(即类方法),因此可以使用Classname访问此方法。

  • Let suppose if our thread is waiting for execution so it does not wake up at condition (i.e. we don't need to call notify() or notifyAll() method to wake up).

    假设我们的线程正在等待执行,因此它不会在条件下唤醒(即,我们不需要调用notify()notifyAll()方法来唤醒)。

  • This method is useful for when a thread wants to wait or sleep for a short duration.

    当线程想要短时间等待或Hibernate时,此方法很有用。

  • In case of sleep() method sleeping thread goes into Runnable state directly (i.e. If sleeping thread wakes up then it does not need to acquire the lock).

    如果使用sleep()方法,则睡眠线程直接进入Runnable状态(即,如果睡眠线程唤醒,则不需要获取锁)。

  • This method will be called from non-synchronize context (i.e. we can call this method from non-synchronize method or block).

    该方法将从非同步上下文中调用(即,我们可以从非同步方法或块中调用此方法)。

  • In the case of sleep() method, the sleeping thread will wait for a particular duration.

    对于sleep()方法,睡眠线程将等待特定的持续时间。

  • The syntax of this method is given below:

    该方法的语法如下:

    static void sleep(long ms){}
    static void sleep(long ms, int ns){}
    
    
  • This method is an overloaded method so we will see all the variations given below,

    此方法是重载方法,因此我们将看到下面给出的所有变化,

    1. sleep(long ms)睡眠(长毫秒)
    2. sleep(long ms, int ns)睡眠(长毫秒,整数ns)
  • We should go for sleep() method if we want to wait for a certain duration.

    如果我们要等待一定的时间,我们应该使用sleep()方法。

翻译自: https://www.includehelp.com/java/differences-between-wait-and-sleep-methods-in-java.aspx

Java中的wait()和sleep()方法之间的区别相关推荐

  1. java ordered list_关于并行处理:Java 8的forEachOrdered()和sequence()方法之间的区别?...

    我正在使用Java 8并行流,并且希望以并行流的方式打印元素是某种顺序(例如插入顺序,反向顺序或顺序顺序). 为此,我尝试了以下代码: System.out.println("With fo ...

  2. 面试题:Java中list、set、map之间的区别

    1.集合的体系 为什么要了解list.set.map呢? 答:我们在编写程序的过程中经常会对容器中的元素进行增删改查,那么如何快速又准 确的定位到你想访问到的元素呢?就不得不提到我们的常用的单列结合C ...

  3. Java中 List、Set、Map 之间的区别

      小博此篇记录了开发过程中常用的几种集合详解,三者的区别对比均从IDEA相关层次图里面所得知,基于JDK8,如有错误欢迎批评指正. List(列表)   List的元素以线性方式存储,可以存放重复对 ...

  4. 在Java中实现单例模式的有效方法是什么? [关闭]

    在Java中实现单例模式的有效方法是什么? #1楼 我使用Spring框架来管理我的单身人士. 它不会强制类的"单一性"(如果涉及多个类加载器,您将无法真正做到),但是它提供了一种 ...

  5. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释

    Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...

  6. java中多态案例工厂类,Java中构造器内部的多态方法的行为实例分析

    本文实例讲述了Java中构造器内部的多态方法的行为操作.分享给大家供大家参考,具体如下: 这篇文章主要讨论的是,若在一个构造器中调用正在构造的对象的某个动态绑定的方法时会出现的情况.在此之前,我们需要 ...

  7. java 两日期的周数_利用 Java 中 Calendar 计算两个日期之间的天数和周数

    利用 Java 中 Calendar 计算两个日期之间的天数和周数 前言 究竟什么是一个 Calendar 呢? 中文的翻译就是日历, 那我们立刻可以想到我们生活中有阳 (公) 历阴 (农) 历之分它 ...

  8. 【转】Java中获取文件大小的正确方法

    [转]Java中获取文件大小的正确方法 本文出处:http://blog.csdn.net/chaijunkun/article/details/22387305,转载请注明.由于本人不定期会整理相关 ...

  9. Java中图形界面重绘方法

    ** Java中图形界面重绘方法 **   在我们编写图形界面程序的过程中,我们就会发现,当我们将窗体拉伸,缩小(或者最大化最小化)的时候,之前在窗体上画的图形会消失了. 这是为什么呢?   1)原来 ...

最新文章

  1. mysql2005备份_创建完整数据库备份 - SQL Server | Microsoft Docs
  2. 网络推广策略带你了解网站地图Sitemap的作用是什么?
  3. Windows内核函数
  4. 根据数据库中的值用js设置RadioButtonList选中与否
  5. Linux运维之--zabbix使用(实时更新)
  6. 微星组件环境linux,微星笔记本常用系统环境组件下载集合
  7. Java KeyTool 的使用
  8. 【C】C语言判断文件后缀名
  9. 一份简单、直接、高效的中文求职信模板,一般是直接写在邮件正文中。
  10. 创建自己的腾讯云存储桶,将图片上传到腾讯云,并实现父子之间的数据双向绑定
  11. 关于pc手机端自适应开发的一些记录
  12. 使用Adobe XD低版本打开高版本文件
  13. java五子棋AI算法人机对战(春物彩羽版可下载试玩PC端)
  14. 多组两两比较用什么检验方法_手把手教你多组独立样本的非参数检验及两两比较...
  15. ThreadPoolExecutor线程池及参数介绍
  16. 无人机——开源飞控简介
  17. 理解GloVe模型(+总结)
  18. access随系统启动的宏,Access创建宏
  19. DAEMON Tools Ultra 虚拟光驱 5.9.0.1527 所有你需要模擬的映像制作软件\虚拟驱动器
  20. 安装Xshell6和Xftp6:要继续使用此程序,您必须应用最新的更新或使用新版本

热门文章

  1. 深入学习jQuery选择器系列第六篇——过滤选择器之状态选择器
  2. json 对象 数组
  3. 课时106.边框练习(理解)
  4. 最大连续子序列----DP动态规划
  5. 故障公告:IIS应用程序池停止工作造成博客站点无法访问
  6. oracle安装中桌面模式与服务器模式的去别
  7. smarty引擎之练习
  8. WCF中的方法重载 实现
  9. shouji android输入法,安卓手机主流输入法对比
  10. matlab数据游标不能使用,启用数据游标模式