文档章节

java wait 和 sleep

caiz
 caiz
发布于 2016/06/16 14:41
字数 358
阅读 25
收藏 5

这两个方法来自不同的类分别是:

1、sleep来自Thread类,和wait来自Object类。 sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。

2、 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得敏感词线程可以使用同步控制块或者方法。 sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源敏感词线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待敏感词线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。 Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。

3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用 synchronized(x){ x.notify() //或者wait() }

4、sleep、wait必须捕获异常,notify和notifyAll不需要捕获异常

© 著作权归作者所有

下一篇: Java logback配置
caiz
粉丝 0
博文 25
码字总数 11583
作品 0
广州
私信 提问
Java并发编程(一)Thread详解

一、概述 在开始学习Thread之前,我们先来了解一下 线程和进程之间的关系: 线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。 线程不能够独立执行,必须依存在应用程序中,由应用...

王磊的博客
2018/10/09
0
0
Java多线程sleep和wait的区别,总结得非常好。

我们都知道sleep是让线程休眠,到时间后会继续执行,wait是等待,需要唤醒再继续执行,那么这两种方法在多线程中的表现形态,它们各有什么区别呢? 可以总结为以下几点。 使用上 从使用角度看...

java技术栈
2017/11/14
0
0
sleep( ) 和 wait( ) 的这 5 个区别,你知道几个?

sleep(休眠) 和 wait(等待) 方法是 Java 多线程中常用的两个方法,它们有什么区别及一些该注意的地方有哪些呢?下面给大家一一分解。 区别1:使用限制 使用 sleep 方法可以让让当前线程休眠,...

Java技术栈
2018/09/19
0
0
java中高级大公司多线程面试题

1)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它? lock接口在多线程和并发编...

java成功之路
2018/10/30
0
0
Core Java基础知识之一(线程私房菜)

Java的高明之处就是在于不断的总结实际应用中不断