wait和sleep区别
2015-06-26 00:12
302 查看
sleep()、suspend()、resume()方法不推荐使用,推荐使用wait()、notify()、notifyAll()。
1.sleep()方法介绍
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非
(a)醒来的线程具有更高的优先级。
(b)正在运行的线程因为其它原因而阻塞。
2.wait()方法介绍
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 当调用wait()后,线程会释放掉它所占有的锁标志,从而使线程所在对象中的其它synchronized数据可被别的线程使用。
3.waite()和notify()的区别
waite()和notify()因为会对对象的“锁标志”进行操作,所以它们必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。
1.sleep()方法介绍
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非
(a)醒来的线程具有更高的优先级。
(b)正在运行的线程因为其它原因而阻塞。
2.wait()方法介绍
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 当调用wait()后,线程会释放掉它所占有的锁标志,从而使线程所在对象中的其它synchronized数据可被别的线程使用。
3.waite()和notify()的区别
waite()和notify()因为会对对象的“锁标志”进行操作,所以它们必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。
相关文章推荐
- TurboMail为企业海外扩张提供分布式邮件系统
- RAID0 RAID1 RAID2 RAID3 RAID4 RAID5 RAID6 RAID7 RAID10
- UVA 11853 - Paintball 战场(dfs)
- 7.Error提示: main cannot be resolved or is not a field
- 服务器TIME_WAIT和CLOSE_WAIT区别及解决方案
- S01E22 Growing Pains
- AIDL:远程调用服务里的方法失败,提示取得的IBinder对象NullPointerException
- leetcode[172]:Factorial Trailing Zeroes
- setFocusPainted(false)的作用
- CWE-234: Failure to Handle Missing Parameter
- ural 1017 Staircases
- Unable to execute dex: Multiple dex files define Lcom/kenai/jbosh/AbstractAttr
- Rails学习总结(2)
- Execution failed for task ': :dexDebug'
- linux进程(fork/vfork)与wait/waitpid
- 最严谨的校验email地址的正则表达式
- Leetcode 217 Contains Duplicate
- 利用CodeIgniter中的Email类发邮件
- Cygwin运行nutch报错:Failed to set permissions of path
- INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES错误解决方法