关于线程中的wait、notify以及sleep的一些学习体会
2017-02-21 21:28
330 查看
由于本人刚刚开始学习java,在学习到线程时,这里在学习过程中发现,在多请求的情况下,会发生线程安全问题,这时候就需要使用到线程同步关键字
synchronized。但具体有这么3个方法,我感觉作为新手非常容易混淆,需要仔细学习一下才能搞清楚。
1、wait、notify使用场景
wait()线程运行后,主动释放对象锁,主动释放cpu控制权,同时本线程休眠,直到其他线程调用对象的notify()后,wait()线程才恢复运行。而如果直接用notify()方法,该线程不立刻释放对象锁,需要等到synchronized块运行完毕后才会释放。虽然两者都可以释放对象锁,但时机是不同的。
2、wait、sleep的区别
两者都可以暂停当前线程,但最大区别是,sleep只是释放cpu控制权,不释放对象锁,同时sleep方法还可以设置暂停时间。wait是既释放了对象锁,又释放了cpu控制权。
synchronized。但具体有这么3个方法,我感觉作为新手非常容易混淆,需要仔细学习一下才能搞清楚。
1、wait、notify使用场景
wait()线程运行后,主动释放对象锁,主动释放cpu控制权,同时本线程休眠,直到其他线程调用对象的notify()后,wait()线程才恢复运行。而如果直接用notify()方法,该线程不立刻释放对象锁,需要等到synchronized块运行完毕后才会释放。虽然两者都可以释放对象锁,但时机是不同的。
2、wait、sleep的区别
两者都可以暂停当前线程,但最大区别是,sleep只是释放cpu控制权,不释放对象锁,同时sleep方法还可以设置暂停时间。wait是既释放了对象锁,又释放了cpu控制权。
相关文章推荐
- JAVA 线程状态以及synchronized,wait,sleep,yield,notify,notifyAll
- 关于Java线程的sleep(),wait(),notify(),notifyall(),interrupt()等各种方法
- java中关于线程的wait , notify ,sleep详解 。
- JAVA线程状态以及synchronized,wait,sleep,yield,notify,notifyAll
- 线程中的一些常用方法的用法 join()、yield()、sleep()、wait()、notify()、notifyAll()
- java关于线程的sleep(),yield(),join(),wait(),notify(),notifyAll()等方法的总结
- 线程并发学习—-线程阻塞(sleep、wait、notifyAll、notify、join)
- 线程关于wait,notify,notifyAll及Lock的学习(买卖)
- JAVA 线程状态以及synchronized,wait,sleep,yield,notify,notifyAll
- java线程总结2--wait/notify(all)/sleep以及中断概念
- 关于线程中sleep()与wait()区别的理解
- Python能否实现超时,以及一些关于线程知识的复习
- 关于java中的synchronized、wait以及notify和notifyAll
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- java中关于线程间协作所用关键字synchronized,wait,notify的用法
- 黑马程序员——总结下线程学习中的wait(),notify()的用法。
- [java多线程]多线程同步(二)——wait, notify, notifyAll, join以及sleep
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- Android关于线程优化以及性能优化的一些建议
- JAVA线程wait, notify, sleep详解