wait()和sleep()的区别
来源:互联网 发布:淘宝 串货 编辑:程序博客网 时间:2024/06/05 05:10
线程在wait 后,可以被另一个拥有相同线程锁对象的线程通过调用notify方法唤醒,而 sleep不行。
wait和notify能正常执行的条件是(否则会抛异常):多个线程的代码,都包在synchronized块中,并且synchronized锁的对象需要是同一个。简而言之,多线程。
当线程调用了wait方法后,就会进入等待状态,需要另外一个持有同一个线程锁的线程通过notify
通知强锁。如果有多个线程在等待(且synchronized 锁对象是同一个),则可以调用notifyAll来唤醒。但是,只有其中一个线程能抢到锁并继续执行(因为 wait 的线程都是在 synchronized 块内,需要争夺 synchronized 锁)。其他的线程会被锁住,直到他们再次获得锁。
wait 方法由 Object 对象调用,而 sleep 则由线程调用。
sleep():“我已经完成了一个时间片,在n微秒前,请不要再给我一个时间片”。这时操作系统不会让这个线程做任何事情,直到sleep时间结束。
wait():”我已经完成了一个时间片,在其他线程调用notify()前,请不要再给我一个时间片)。这时操作系统不会安排这个线程继续运行,直到有人调用了notify()。
阅读全文
0 0
- sleep() 和 wait() 的区别
- wait()和sleep()的区别
- sleep和wait的区别
- sleep() 和 wait() 的区别
- sleep和wait的区别
- sleep和wait的区别
- wait和sleep的区别
- sleep和wait的区别
- wait()和sleep()的区别
- sleep()和wait()的区别
- wait()和sleep()的区别
- Sleep()和wait()的区别?
- sleep()和wait()的区别
- sleep和wait的区别
- wait() 和 sleep() 的区别
- sleep和wait的区别
- sleep()和wait()的区别
- sleep()和wait()的区别
- Android应用使用Multidex突破64K方法数限制
- Intellij下搭建maven+mybatis+springMVC项目(各种遇到的坑总结)
- Qt进程间通信 之使用QSharedMemory
- 从 MVC 到前后端分离
- Java核心技术点之集合框架
- wait()和sleep()的区别
- CCF CSP 201512-3 画图(Java-90分)
- hdu 6097 Mindis (反演点)
- chatterbot源码comparisons的测试
- iOS Coredata的基本使用
- js BOM
- Linux上Mysql 快速进入及常用命令
- 大数据具体有哪些类型你知道吗
- poj 2761 Feed the dogs (Treap+离线处理)