关于线程中的wait、notify以及sleep的一些学习体会

来源:互联网 发布:傲剑双龙斩升级数据 编辑:程序博客网 时间:2024/06/04 23:28
由于本人刚刚开始学习java,在学习到线程时,这里在学习过程中发现,在多请求的情况下,会发生线程安全问题,这时候就需要使用到线程同步关键字

synchronized。但具体有这么3个方法,我感觉作为新手非常容易混淆,需要仔细学习一下才能搞清楚。

1、wait、notify使用场景

wait()线程运行后,主动释放对象锁,主动释放cpu控制权,同时本线程休眠,直到其他线程调用对象的notify()后,wait()线程才恢复运行。而如果直接用notify()方法,该线程不立刻释放对象锁,需要等到synchronized块运行完毕后才会释放。虽然两者都可以释放对象锁,但时机是不同的。

2、wait、sleep的区别

两者都可以暂停当前线程,但最大区别是,sleep只是释放cpu控制权,不释放对象锁,同时sleep方法还可以设置暂停时间。wait是既释放了对象锁,又释放了cpu控制权。


0 0
原创粉丝点击