sleep和wait有什么区别

sleep和wait有什么区别都用来进行线程控制 他们最大本质的区别是 sleep 不释放同步锁 wait 释放同步缩 sleep 是让某个线程暂停运行一段时间 其控制范围是由当前线程决定 也就是说 在线程里面决定 好比如说 我要做的事情是 点火 gt 烧水 gt 煮面 而当我点完火之后我不立即烧水 我要休息一段时间再烧 对于运行的主动权是由我的流程来控制 而 wait 首先 这是由某个确定的对

都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩.;

基本差别

  •     sleep是Thread类的方法,wait是Object类中定义的方法
  •     sleep()方法可以在任何地方使用
  •     wait()方法只能在synchronized方法或synchronized块中使用

 

本质区别

 

  •     Thread.sleep智慧让出CPU,不会导致锁行为的改变
  •     Object.wait不仅让出CPU,还会释放已经占有的同步资源锁

 

1

sleep()是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.。对于运行的主动权是由我的流程来控制.

wait(),首先,这是由某个确定的对象来调用的,将这个对象理解成一个传话的人,当这个人在某个线程里面说”暂停!”,也是 thisOBJ.wait(),这里的暂停是阻塞,thisOBJ就好比一个监督我的人站在我旁边,本来该线 程应该执行1后执行2,再执行3,而在2处被那个对象喊暂停,那么我就会一直等在这里而不执行3,但正个流程并没有结束,我一直想去煮饭,但还没被允许, 直到那个对象在某个地方说”通知暂停的线程启动!”,也就是thisOBJ.notify()的时候,那么我就可以煮饭了,这个被暂停的线程就会从暂停处 继续执行.

2

  • sleep()可以将一个线程睡眠,参数可以指定一个时间。
  • wait()可以将一个线程挂起,直到超时或者该线程被唤醒。

wait有两种形式wait()和wait(milliseconds).

 

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

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

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


相关推荐

  • log4j2.xml配置文件详解_log4j配置日志文件目录

    log4j2.xml配置文件详解_log4j配置日志文件目录log4j.xml配置文件详解一log4j.xml配置<?xmlversion=”1.0″encoding=”UTF-8″?><!DOCTYPElog4j:configurationSYSTEM”log4j.dtd”><log4j:configuration><!–将日志信息输出到控制台–>&lt…

    2022年9月30日
    3
  • python的安装教程_Python的安装

    python的安装教程_Python的安装1、资源准备       需要准备Python解释器与Pycharm编辑器,目前主流的编辑器是这个,可根据个人喜好调整,像NotePad++也是可以写python代码的,下面准备了两组链接,一组为官网链接,另一组为我所使用的版本的链接:官网链接       Python的官网:https://www.python.org/   &n

    2022年8月29日
    3
  • R语言入门-安装R和Rstuido软件

    R语言入门-安装R和Rstuido软件安装R和Rstuido软件R语言是用于统计分析,图形表示和报告的编程语言和软件环境;Rstudio是编辑、运行R语言的最为理想的工具之一。1、官网下载R安装包  下载地址为:https://cran.r-project.org  进入链接,如下图所示,在页面顶部提供了三个下载链接,分别对应三种操作系统:Windows、Mac和Linux。请选择自己操作系统对应的链接,接下来我将以wi…

    2022年6月27日
    47
  • Eclipse中使用SVN[通俗易懂]

    Eclipse中使用SVN[通俗易懂]概述在我们的日常工作中,经常会用到SVN,大多数都是搭配Eclipse/MyEclipse使用。本文主要介绍SVN在Eclipse中的一些最长用的功能,包括SVN插件的下载使用、上传代码到服务器、从服务器下载代码、从服务器更新代码、解决代码冲突。本文链接:http://blog.csdn.net/v123411739/article/details/225121331.在Eclipse里下载Sub…

    2022年6月3日
    38
  • ubuntu下30天自制操作系统还在继续学习中

    ubuntu下30天自制操作系统还在继续学习中

    2021年12月1日
    43
  • lineNumber: 6; columnNumber: 40; 文档根元素 “mapper” 必须匹配 DOCTYPE 根 “configuration”。

    lineNumber: 6; columnNumber: 40; 文档根元素 “mapper” 必须匹配 DOCTYPE 根 “configuration”。运行mybatis时报错:lineNumber: 6; columnNumber: 40; 文档根元素 “mapper” 必须匹配 DOCTYPE 根 “configuration”。Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.a…

    2022年6月13日
    40

发表回复

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

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