本篇文章给大家分享的是有关Java项目中中sleep()与wait()有什么不同,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
前言
对于sleep()
方法,我们首先要知道该方法是属于Thread类中的。而wait()
方法,则是属于Object类中的。
sleep()
方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
在调用sleep()
方法的过程中,线程不会释放对象锁。
而当调用wait()
方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()
方法后本线程才进入对象锁定池准备
获取对象锁进入运行状态。
什么意思呢?
举个列子说明:
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!!!"); } } }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Java项目中中sleep()与wait()有什么不同
后端开发2023-05-31
sleep()与wait()在Java中有什么不同
后端开发2023-05-31
java中sleep()和wait()有什么区别
后端开发2023-06-14
在Java中sleep()和wait()有什么区别
后端开发2024-04-02
Java中sleep和wait方法有什么区别
后端开发2023-06-30
python中sleep和wait有什么区别
后端开发2023-06-14
java中wait和sleep的区别是什么
后端开发2023-08-08
java中wait和sleep的区别是什么?
后端开发2021-04-11
Java项目中使用 this()与super()方法有什么不同
后端开发2023-05-31
WindowManager与Window在Android项目中有什么不同
后端开发2023-05-31
Java中wait与sleep的区别讲解(wait有参及无参区别)
后端开发2024-04-02
java 中String.equals与==有什么不同
后端开发2023-05-31
java中await与wait有什么区别
后端开发2023-08-11
dismiss()与cancel()方法在Android项目中有什么不同
后端开发2023-05-31
Java中的==与equals有什么不同
后端开发2023-05-31
Java中hashCode()与equals()有什么不同
后端开发2023-05-31
Thread与runnable在java中有什么不同
后端开发2023-05-31
init与clinit在Java中有什么不同
后端开发2023-05-31
咦!没有更多了?去看看其它编程学习网 内容吧