首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ReentrantLock作为同步可靠吗?

使用ReentrantLock作为同步可靠吗?
EN

Stack Overflow用户
提问于 2015-11-14 03:59:24
回答 1查看 111关注 0票数 0

我搜索了很多,但与'ReentrantLock'和正常'synchronized'的过程相混淆。

例如(1):

代码语言:javascript
复制
Object obj = new Object();

synchronized(obj){
//lock is guaranteed to be acquired 
}

示例(2)

代码语言:javascript
复制
Lock lock = new ReentrantLock();
lock.lock(); //problem here
try{
//dostuff
}
finally{
lock.unlock();
}

我的问题是:

例如,1:它保证使用同步关键字获取对象的锁。

例如,2:是否保证使用lock.lock()方法获取锁?或者线程会继续到下一行执行吗??而不需要锁。

我对此表示怀疑,因为使用线程给我带来了很多次意想不到的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-14 04:02:42

只有一个线程将获得锁:这是ReentrantLock的契约。

因此,示例2是完全线程安全的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33704951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档