这两者的施加者是有本质区别的. 
sleep()是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.好比如说,我要做的事情是 "点火->烧水->煮面",而当我点完火之后我不立即烧水,我要休息一段时间再烧.对于运行的主动权是由我的流程来控制.

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

其实两者都可以让线程暂停一段时间,但是本质的区别是一个线程的运行状态控制,一个是线程之间的通讯的问题

在java.lang.Thread类中,提供了sleep(),
而java.lang.Object类中提供了wait(), notify()和notifyAll()方法来操作线程
sleep()可以将一个线程睡眠,参数可以指定一个时间。
而wait()可以将一个线程挂起,直到超时或者该线程被唤醒。
    wait有两种形式wait()和wait(milliseconds).
sleep和wait的区别有
  1,这两个方法来自不同的类分别是Thread和Object
  2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
  3,wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
    任何地方使用
   synchronized(x){
      x.notify()
     //或者wait()
   }
   4,sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

Thread wait和sleep的区别相关推荐

  1. c++11中thread join和detach的区别

    线程状态: 在一个线程的生存期内,可以在多种状态之间转换,不同的操作系统可以实现不同的线程模型,定义许多不同的线程状态,每个状态还可以包含多个子状态,但大体来说,如下几种状态是通用的: 1)就绪:参与 ...

  2. Thread.currentThread()与this的区别

    在自定义线程类时,如果线程类是继承java.lang.Thread的话,那么线程类就可以使用this关键字去调用继承自父类Thread的方法,this就是当前的对象. 另一方面,Thread.curr ...

  3. Handler、Thread、HandlerThread三者的区别

    摘取重点: HandlerThread对象start后可以获得其Looper对象,并且使用这个Looper对象实例Handler,之后Handler就可以运行在其他线程中了. public class ...

  4. 知识点干货--聊一聊Android中Service与Thread的区别

    古语说得好:"一寸光阴一寸金,寸金难买寸光阴."一寸光阴和一寸长的黄金一样昂贵,而一寸长的黄金却难以买到一寸光阴.比喻时间十分宝贵.此语句出自唐朝王贞白的<白鹿洞二首> ...

  5. 全局事务与本地事务的区别应用(从代码方面来探讨的)

    全局事务:资源管理器管理和协调的事务,可以跨越多个数据库和进程.资源管理器一般使用 XA 二阶段提交协议与"企业信息系统"(EIS) 或数据库进行交互.  本地事务:在单个 EIS ...

  6. 多线程与单线程的区别

    单线程(Thread)与多线程的区别 首先了解一下cpu,随着主频(cpu内核工作时钟频率,表示在CPU内数字脉冲信号震荡的速度,等于外频(系统基本时间)乘倍频)的不断攀升,X86构架的硬件逐渐成为瓶 ...

  7. SurfaceView和View的区别

    前言:努力,离目标的五分之一又近了一步. 1.view view在api中的结构 java.lang.Object android.view.View   直接子类: AnalogClock, Ima ...

  8. 关于 Thread.currentThread()

    关于 Thread.currentThread() currentThread()  到底是什么? 其实currentThread() 只是Thread 的一个静态方法.返回的正是执行当前代码指令的线 ...

  9. Thread.currentThread()、isAlive()、Thread.sleep()的使用

    1.Thread.currentThread()方法: 返回当前正在运行的线程 一个简单的例子: MyThread_7.Java类的构造函数是被main线程调用的,而run()方法是被名为Thread ...

最新文章

  1. C++的集成开发环境(IDE)
  2. 搜索引擎技术——全文检索基础原理
  3. 聊聊Synchronized
  4. libsvm 使用介绍
  5. C++基础-内存管理
  6. java空间租用_java影片租赁平台
  7. linux下单独安装oracle12.1客户端
  8. python异步_Python中的异步编程
  9. 如何在一周内上线50个用户增长策略
  10. Python连接MySQL数据库之pymysql模块使用
  11. python公众号留言功能_Python实现的微信公众号群发图片与文本消息功能实例详解...
  12. (转)Android调试运行时错误之Process XXX terminated by signal (11)
  13. 推荐FPGA入门书籍
  14. Html5 通用布局方式
  15. Git基础(18):如何使用GitLab
  16. NLPCC2013中文微博细粒度情感识别(二)
  17. Docker-Windows安装、升级、卸载
  18. 微信公众平台 html,微信公众平台.html
  19. 3.8 使用切片工具制作网页 [Ps教程]
  20. Sigar获取系统信息

热门文章

  1. Cartographer分枝定界算法比喻理解
  2. 青岛医院计算机招聘试题及答案,2020青岛市妇女儿童医院招聘试题及答案解析...
  3. SVM详解(三)支持向量机使用核技巧
  4. mysql字段类型详解_MySQL字段类型详解
  5. 《初始化和反初始化》
  6. Unity调用USB摄像头开启与关闭
  7. RecycleView 和Viewpager2
  8. 微信小程序获取手机号码第一次失败第二次成功的解决方案
  9. 微信公众号之微信支付(V3版)jsp页面jsapi统一下单调启支付(java版)
  10. Caspase-1活性分析:艾美捷FAM-FLICA试剂盒解决方案