首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8-ReentrantLock/锁定对象

Java 8-ReentrantLock/锁定对象
EN

Stack Overflow用户
提问于 2018-07-17 05:48:04
回答 0查看 464关注 0票数 0

我想知道使用ReentrantLock是否是我的问题的解决方案;我正在尝试“锁定”(防止其他线程访问/使用它)一个对象,直到某个操作完成,然后解锁它以便其他线程可以访问它。我想使用sun的不安全的#monitorEnter/exit,但这可能会导致死锁。

想象一下下面的情况:

代码语言:javascript
复制
public void doSomething() {
    Object object = someObject;

    // Object should be locked until operation is complete.
    doSomethingElse(object);

    // Object should now be unlocked so other threads can use/access it.
}

public void doSomethingElse(Object object) {
    // Something happens to the object here
}

这就是解决方案吗?

代码语言:javascript
复制
  ReentrantLock reentrantLock = new ReentrantLock();

  public void doSomething() {
        Object object = someObject;

        // Object should be locked until operation is complete.
        reentrantLock.lock();
        doSomethingElse(object);

        reentrantLock.unlock();

        // Unlock object for other threads after complete.
    }

    public void doSomethingElse(Object object) {
        // Something happens to the object here
    }

提前谢谢。

EN

回答

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

https://stackoverflow.com/questions/51370537

复制
相关文章

相似问题

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