关于java多线程中的wait和sleep方法和临界区的概念
来源:互联网 发布:python 相加不用运算符 编辑:程序博客网 时间:2024/05/13 18:12
1.这两个方法的所属不同,sleep属于Thread类中的。而wait()方法,则是属于Object类中的。
2.sleep方法使得线程暂停执行设置的时间,此时失去CPU的控制权但是他的Monitor监控状态依然存在,指定的时间过去之后他就又能开始执行了。
3sleep方法并不会释放对象锁但是呢wait()方法会释放对象锁
4.wait()方法必须在有锁的状态下才能够使用否则就会报错java.lang.IllegalMonitorStateException,而sleep方法可以在任何时候使用。sleep方法需要捕获异常信息,而wait以及他的配套notifyAll,notify不需要捕获。
5.在这里我们要了解下临界区的概念:有时候你只是希望防止多个线程同时访问方法内部的部分代码而不是防止访问整个方法,通过这种方式分离出来的代码段被称为临界区她也使用synchronized关键字建立,这里
synchronized被用来指定某个对象,此对象的锁被用来指定某个对象此对象的锁被用来对花括号内的代码进行同步控制
synchronized(syncObject){
//this code can be accessed by only one task at a time
}
这也被称为同步控制块。在进入此段代码前,必须得到syncObject对象的锁,如果其他线程已经得到这个锁那么就要等待锁被释放以后才能进入临界区。通过使用同步控制块,而不是对整个方法进行同步控制,可以使得多个任务访问对象的时间和性能得到显著的提高。
6.有人问为啥有了sleep方法还要有wait呢?你可能会说wait能够暂停这个线程然后等待一个通知来让它醒过来,但是我可以说用sleep也可以做到啊,就是在sleep的时候interrupt()一下然后在异常捕获的catch中执行想做的事情呀。其实这里有个很大的区别就是,为啥要使用wait呢是因为可能有几个线程在争夺执行临界区的代码,但是呢如果在临界区有判断条件的使得它需要释放该锁的情况就要用wait然后用notiy来唤醒。
- 关于java多线程中的wait和sleep方法和临界区的概念
- 关于Java中的sleep和wait方法
- java中的多线程中wait和sleep方法的区别
- 关于Java多线程中的wait()、sleep()、notify()和notifyAll()的简单介绍和使用
- 多线程关于wait()和sleep()的区别
- 关于多线程的sleep和wait
- java多线程中wait()和sleep()方法的区别
- 浅谈Java多线程中的Thread.sleep()和wait()方法的区别
- Java中的wait()方法和sleep()方法的区别是什么?
- java 中的 wait()方法和 sleep()方法的区别是什么?
- java 中的 wait()方法和 sleep()方法的区别是什么?
- java 中的 wait()方法和 sleep()方法的区别
- java 中的 wait()方法和 sleep()方法的区别
- Java中的 wait() 方法和 sleep() 方法的区别
- java 中的 wait()方法和 sleep()方法的区别
- 列关于java 中的 wait()方法和 sleep()方法的区别描述错误的是?
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- caffe1——图像转换成lmdb(ldeveldb)、hdf5文件
- 【java设计模式】单例设计模式案例:工厂加工零件(对象是工厂,所以就需要创建一个工厂的类)
- PhoneGap + Dreamweaver 5.5 无法在模拟器中打开的问题
- Git常用操作命令
- PHP知识点总结(二)
- 关于java多线程中的wait和sleep方法和临界区的概念
- LintCode 74-第一个错误的代码版本
- 区分inet_addr、inet_aton和inet_ntoa
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- 笔记本装CentOS系统后,关闭盖子不进入睡眠模式
- linux 下的 wchar_t
- ArrayTool是一个定义了操作数组常用的工具类,比如求最大值,排序,查找
- 剑指offer-----判断字符串是否表示数值(java版)
- 原生应用的末路2:启示录