java中的sleep和wait的区别

 我来答
OfferComing留学
2022-12-24 · OfferComing一站式留学攻略
OfferComing留学
向TA提问
展开全部

sleep和wait的区别:

1、sleep的意思是:睡,睡觉,睡眠。

2、wait的意思是:等候,推迟,延缓等待,耽搁,伺候用餐。

拓展资料

sleep的用法

1、They were exhausted from lack of sleep 

由于缺乏睡眠,他们非常疲惫。

2、During the car journey, the baby slept 

坐车来的路上,宝宝睡着了。

3、I think he may be ready for a sleep soon. 

我想他也许很快就要睡一觉了。

4、I can't get to sleep with all that singing. 

那些歌声搅得我无法入睡。

5、I didn't lose too much sleep over that investigation. 

我并不太担心那个调查。

wait

1、I walk to a street corner and wait for the school bus 

我走到街角等校车。

2、There'll be a car waiting for you 

会有辆汽车等你。

3、I want to talk to you, but it can wait 

我想和你谈谈,但可以晚点再说。

4、If you think this all sounds very exciting, just wait until you read the book 

如果你觉得所有这些听起来令人兴奋,那就等着去读这本书吧。

5、'Wait a minute!' he broke in. 'This is not giving her a fair hearing!' 

“等一下,”他插嘴说,“这没有给她一个公平的解释机会!”

百度网友48b2b54
2016-10-19 · TA获得超过229个赞
知道小有建树答主
回答量:274
采纳率:50%
帮助的人:199万
展开全部

对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。

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

1 /**
 2  * 
 3  */
 4 package com.b510.test;
 5 
 6 /**
 7  * java中的sleep()和wait()的区别
 8  * @author Hongten
 9  * @date 2013-12-10
10  */
11 public class TestD {
12 
13     public static void main(String[] args) {
14         new Thread(new Thread1()).start();
15         try {
16             Thread.sleep(5000);
17         } catch (Exception e) {
18             e.printStackTrace();
19         }
20         new Thread(new Thread2()).start();
21     }
22     
23     private static class Thread1 implements Runnable{
24         @Override
25         public void run(){
26             synchronized (TestD.class) {
27             System.out.println("enter thread1...");    
28             System.out.println("thread1 is waiting...");
29             try {
30                 //调用wait()方法,线程会放弃对象锁,进入等待此对象的等待锁定池
31                 TestD.class.wait();
32             } catch (Exception e) {
33                 e.printStackTrace();
34             }
35             System.out.println("thread1 is going on ....");
36             System.out.println("thread1 is over!!!");
37             }
38         }
39     }
40     
41     private static class Thread2 implements Runnable{
42         @Override
43         public void run(){
44             synchronized (TestD.class) {
45                 System.out.println("enter thread2....");
46                 System.out.println("thread2 is sleep....");
47                 //只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
48                 TestD.class.notify();
49                 //==================
50                 //区别
51                 //如果我们把代码:TestD.class.notify();给注释掉,即TestD.class调用了wait()方法,但是没有调用notify()
52                 //方法,则线程永远处于挂起状态。
53                 try {
54                     //sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,
55                     //但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
56                     //在调用sleep()方法的过程中,线程不会释放对象锁。
57                     Thread.sleep(5000);
58                 } catch (Exception e) {
59                     e.printStackTrace();
60                 }
61                 System.out.println("thread2 is going on....");
62                 System.out.println("thread2 is over!!!");
63             }
64         }
65     }
66 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千锋教育
2016-09-27 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.
还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.

sleep和wait的区别还有:
1。这两个方法来自不同的类分别是Thread和Object
2。最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3。wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
4。sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
本回答被提问者采纳
  • 官方电话
  • 官方服务
    • 官方网站
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
代作网I站
2016-09-27 · 超过20用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:20.1万
展开全部
sleep不会释放对象锁,而wait会释放
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式