线程相关的一些问题
2017-06-26 16:36
363 查看
1、java中wait和sleep方法的不同:
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备
获取对象锁进入运行状态。(最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。)
2、java阻塞队列的实现:
阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备
获取对象锁进入运行状态。(最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。)
2、java阻塞队列的实现:
阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来
相关文章推荐
- windows线程挂起与唤醒,SuspendThread与ResumeThread的一些相关问题
- 一些线程相关的问题
- QGraphicsItem的paint函数的一些相关问题
- 解决方案迁移到Visual Studio 2008的一些相关问题
- C#线程相关问题总结:基本操作及UI控件交互
- VC++学习笔记(3)------- CString相关的一些问题以及LineLength()的
- 把遇到过的对.Net线程的一些问题和误解集中起来和大家分享转载
- [导入]国内一些不错的PDF相关问题讨论的论坛
- Servlet线程安全相关问题
- 与j2me签名相关的需要注意的一些问题
- Axure RP Pro - 相关问题 - 一些字符无法直接进入编辑部件文字状态
- 把遇到过的对.Net线程的一些问题和误解集中起来和大家分享,也希望大家能一起补充,热烈欢迎讨论(转)
- JAVA thread线程的同步和一些问题
- 系统分析,业务建模,UML,RUP相关的一些问题和回复
- facanf相关的一些问题
- C#线程相关问题总结:基本操作及UI控件交互
- 把遇到过的对.Net线程的一些问题和误解集中起来和大家分享,也希望大家能一起补充,热烈欢迎讨论(引)
- CDialog中不响应OnKeyDown和一些相关问题
- sql2005锁,隔离级别等一些相关问题(一)
- 和线程安全相关的一些技术