对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。

  sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。

在调用sleep()方法的过程中,线程不会释放对象锁。

  而当调用wait()方法的时候,线程会放弃对象锁(仍然持有资源),进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

/*** */
package com.b510.test;/*** java中的sleep()和wait()的区别* @author Hongten* @date 2013-12-10*/
public class TestD {public static void main(String[] args) {new Thread(new Thread1()).start();try {Thread.sleep(5000);} catch (Exception e) {e.printStackTrace();}new Thread(new Thread2()).start();}private static class Thread1 implements Runnable{@Overridepublic void run(){synchronized (TestD.class) {System.out.println("enter thread1...");    System.out.println("thread1 is waiting...");try {//调用wait()方法,线程会放弃对象锁,进入等待此对象的等待锁定池TestD.class.wait();} catch (Exception e) {e.printStackTrace();}System.out.println("thread1 is going on ....");System.out.println("thread1 is over!!!");}}}private static class Thread2 implements Runnable{@Overridepublic void run(){        //对TestD.class加锁synchronized (TestD.class) {System.out.println("enter thread2....");System.out.println("thread2 is sleep....");//只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。TestD.class.notify();//==================//区别//如果我们把代码:TestD.class.notify();给注释掉,即TestD.class调用了wait()方法,但是没有调用notify()//方法,则线程永远处于挂起状态。try {//sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,//但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。//在调用sleep()方法的过程中,线程不会释放对象锁。Thread.sleep(5000);} catch (Exception e) {e.printStackTrace();}System.out.println("thread2 is going on....");System.out.println("thread2 is over!!!");}}}
}

java中的sleep()和wait()的区别相关推荐

  1. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  2. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

  3. Java中long和Long有什么区别

    Java中long和Long有什么区别(转) Java的数据类型分两种: 1.基本类型:long,int,byte,float,double,char 2. 对象类型(类): Long,Integer ...

  4. Java中活锁和死锁有什么区别?

    Java中活锁和死锁有什么区别? 活锁:一个线程通常会有会响应其他线程的活动.如果其他线程也会响应另一个线程的活动,那么就有可能发生活锁.同死锁一样,发生活锁的线程无法继续执行.然而线程并没有阻塞-- ...

  5. Java中wait和sleep方法的区别

    1.两者的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁). wait ...

  6. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  7. java == hashcode,java中==和equals和hashCode的区别

    java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...

  8. java system sleep_详解Java中的sleep()和wait()的区别

    详解Java中的sleep()和wait()的区别 对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序 ...

  9. JAVA中isEmpty、null、的区别

    JAVA中isEmpty.null.""的区别 isEmpty()         分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空)    ""   ...

最新文章

  1. .net 4.0下载
  2. linux 64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32
  3. C++语言基础(20)-模板的非类型参数
  4. NYOJ 737---石子归并(GarsiaWachs算法)
  5. html 闪烁字,HTML最简单的文字闪烁代码
  6. PX2板实现H.264裸码流的解码
  7. linux驱动编写(usb host驱动入门)
  8. 【报告分享】2021年人工智能安全风险及治理研究报告.pdf(附下载链接)
  9. python局域网控制电脑关机_黑客操作:用python远程开机and关机
  10. 你不可不知道的CSS水平+垂直居中方案大全
  11. Unity 制作虚拟手柄例子
  12. JDK动态代理源码解读
  13. Python(4):上机练习——英文数字字符串打印为阿拉伯数字字符串
  14. 达梦共享集群DM DMDSC集群对比Oracle RAC原理详解
  15. 微信分享和微信H5跳转到APP开放标签wx-open-launch-app使用及样式设置
  16. 利用matlab将三维数据画成三维立体图
  17. 清华大学计算机相关夏令营,清华大学计算机系举办2014年信息学夏令营
  18. vscode格式化代码使html标签不换行
  19. abaqus截面惯性矩_Abaqus基本概念汇总
  20. [1106]python bezier(贝塞尔)曲线

热门文章

  1. 计算机虚拟化技术论文,【计算机网络论文】虚拟技术计算机网络论文(共1775字)...
  2. gdb 版本和gcc版本的对应关系_GNU发布GDB新版本 10.1和 mtools 4.0.25
  3. Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules
  4. 核磁共振波谱分析_实验室各种仪器原理动图剖析,这么多分析仪器原理,1次搞清楚了...
  5. html load方法的区别,jQuery  中的.load()、$get()、$,post()用法和区别
  6. python读取配置文件不更改大小写_Python不区分大小写的文件名?
  7. Centos6.5 下安装opencv
  8. 【C++】40. std::array与int a[]方式创建数组的区别
  9. 卷积神经网络初探 | 数据科学家联盟 http://dataunion.org/20942.html
  10. Spring的AOP原理