广告
返回顶部
首页 > 资讯 > 精选 >java中sleep()和wait()有什么区别
  • 929
分享到

java中sleep()和wait()有什么区别

2023-06-14 22:06:28 929人浏览 泡泡鱼
摘要

这篇文章主要介绍java中sleep()和wait()有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序、分布式系统和嵌入式系统

这篇文章主要介绍java中sleep()和wait()有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序、分布式系统和嵌入式系统应用程序。

1、区别说明

wait()是Object的方法,sleep()是Thread的方法。

wait()必须采用同步方法,不需要sleep()方法。

线程在同步方法中执行sleep()方法,不释放monitor,wait()方法释放monitor锁。

短暂休眠后,sleep()方法会主动退出阻塞,而wait()方法需要在没有指定wait时间的情况下被其他线程中断才能退出阻塞。

2、实例

import java.text.SimpleDateFORMat;import java.util.Date;public class TestSleepAndWait {public static void main(String[] args) {new Thread1().start();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}new Thread2().start();}}class Thread1 extends Thread{private void sout(String s){System.out.println(s+" "+new SimpleDateFormat("HH:mm:ss:SS").format(new Date()));}@Overridepublic void run() {sout("enter Thread1.run");synchronized (TestSleepAndWait.class){//wait只能在同步代码块或者同步方法中使用sout("Thread1 is Going to wait");try {TestSleepAndWait.class.wait(); // 这里只能使用持有锁TestSleepAndWait.class.wait(),使用其他对象则报错java.lang.IllegalMonitorStateException} catch (InterruptedException e) {e.printStackTrace();}sout("after waiting, thread1 is going on");sout("thread1 is over");}}}class Thread2 extends Thread{private void sout(String s){System.out.println(s+" "+new SimpleDateFormat("HH:mm:ss:SS").format(new Date()));}@Overridepublic void run() {sout("enter Thread2.run");synchronized (TestSleepAndWait.class){//wait只能在同步代码块或者同步方法中使用sout("Thread2 is going to notify");TestSleepAndWait.class.notify(); 这里只能使用持有锁TestSleepAndWait.classsout("thread2 is going to sleep 10ms");try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}sout("after sleeping, thread2 is going on");sout("thread2 is over");}}}

内容扩展:

package com.b510.test;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{    @Override    public 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{    @Override    public void run(){      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()有什么区别”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: java中sleep()和wait()有什么区别

本文链接: https://www.lsjlt.com/news/275381.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中sleep()和wait()有什么区别
    这篇文章主要介绍java中sleep()和wait()有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统...
    99+
    2023-06-14
  • 在Java中sleep()和wait()有什么区别
    Java中sleep()和wait()的区别:sleep()是线程类的静态方法,而wait()是Object类的方法。Sleep()可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断,而Wait()可以...
    99+
    2022-10-18
  • sleep () 和 wait () 有什么区别?
    sleep () 方法 sleep () 方法是Thread类的静态方法,可以通过Thread.sleep()来调用。 它是线程的一个静态方法,用于让当前线程休眠一段指定的时间。 sleep () 不会释放线程持有的锁,因此其他线程无...
    99+
    2023-08-30
    java
  • Java中sleep和wait方法有什么区别
    本篇内容主要讲解“Java中sleep和wait方法有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中sleep和wait方法有什么区别”吧!一、sleep和wait方法的区别根...
    99+
    2023-06-30
  • python中sleep和wait有什么区别
    这期内容当中小编将会给大家带来有关python中sleep和wait有什么区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • java中wait和sleep的区别是什么
    在Java中,`wait()`和`sleep()`是两个不同的方法,用于不同的场景。1. `wait()`: `wait()`是Ob...
    99+
    2023-08-08
    java wait sleep
  • java中wait和sleep的区别是什么?
    sleep:sleep 方法属于 Thread 类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了 sleep方法之后,并不...
    99+
    2021-04-11
    java wait sleep
  • java wait和sleep的区别是什么
    所以sleep()和wait()方法的最大区别是: ·sleep()睡眠时,保持对象锁,仍然占有该锁; ·而wait()睡眠时,释放对象锁。 ·但是wait()和sleep()都可以通过interrupt()方法打断线程的...
    99+
    2021-07-13
    java教程 java wait sleep 区别
  • java中sleep()和wait()的区别有哪些
    这篇文章主要介绍java中sleep()和wait()的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;...
    99+
    2023-06-14
  • JAVA中sleep与wait区别
    wait()方法则是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了notify()方法,之前调用wait()的线程才会解除wait状态,可以去参与竞争同步资源锁,进而得到执行。sleep()...
    99+
    2021-01-22
    java教程 JAVA
  • Java中wait与sleep的区别讲解(wait有参及无参区别)
    目录1. wait() 与wait( long timeout ) 区别2. wait(0) 与 sleep(0)区别3. wait 和sleep 释放代码4. wait 与 sle...
    99+
    2022-11-13
  • java线程sleep和wait的区别有哪些
    Java中的线程sleep和wait方法有以下区别:1. 调用wait方法的线程会放弃自己的锁,并进入等待状态,直到其他线程调用相同...
    99+
    2023-09-25
    java
  • java sleep()和wait()的区别点总结
    1、区别说明 wait()是Object的方法,sleep()是Thread的方法。 wait()必须采用同步方法,不需要sleep()方法。 线程在同步方法中执行sleep()方法...
    99+
    2022-11-12
  • java面试突击之sleep和wait有什么区别详析
    目录前言区别一:语法使用不同区别二:所属类不同区别三:唤醒方式不同区别四:释放锁资源不同sleep 不释放锁wait 释放锁区别五:线程进入状态不同总结前言 sleep 方法和 wa...
    99+
    2022-11-13
  • Java详细分析sleep和wait方法有哪些区别
    目录一、sleep和wait方法的区别二、wait方法wait方法的使用wait结束等待的条件三、notify和notifyAll方法一、sleep和wait方法的区别 根本区别:s...
    99+
    2022-11-13
  • java中sleep方法和wait方法的五个区别
    目录区别一:语法使用不同区别二:所属类不同区别三:唤醒方式不同区别四:释放锁资源不同sleep 不释放锁wait 释放锁区别五:线程进入状态不同总结前言: sleep 方法和 wai...
    99+
    2022-11-13
  • sleep()与wait()在Java中有什么不同
    sleep()与wait()在Java中有什么不同?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。详解Java中的sleep()和wait()的区别对于sleep()方法,我们首...
    99+
    2023-05-31
    java sleep() wait()
  • java中await与wait有什么区别
    在Java中,`await`和`wait`是两个不同的概念,具有不同的用途和语义。1. `await`:`await`是用于线程间的协作与通信,一般用于多线程编程中的同步操作。它是在`java.util.concurrent`包中的`C...
    99+
    2023-08-11
    java await wait
  • linux中nanosleep() 和 sleep()有什么区别
    linux中nanosleep() 和 sleep()有什么区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是Linux系统Linux是一种免费使用和自由传播的类UN...
    99+
    2023-06-13
  • Java项目中中sleep()与wait()有什么不同
    本篇文章给大家分享的是有关Java项目中中sleep()与wait()有什么不同,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言对于sleep()方法,我们首先要知道该方法是...
    99+
    2023-05-31
    java sleep() wait()
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作