您的位置:首页 > 大数据 > 人工智能

关于线程中的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控制权。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  线程同步