gpt4 book ai didi

java - 如何在 Android 中创建锁 (concurrent.locks.Lock)?

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:59 24 4
gpt4 key购买 nike

这一定很明显,但我找不到答案。我需要锁定一个变量,以确保避免出现一些竞争危险情况。据我所知,根据 android 文档,存在一个使用 Lock 的非常简单的解决方案:

Lock l = ...;
l.lock();
try {
// access the resource protected by this lock
}
finally {
l.unlock();
}

到目前为止,还不错。但是,我无法使第一行工作。似乎是这样的:

Lock l = new Lock();

可能是正确的,但 eclipse 报告“无法实例化锁类型”- 仅此而已。

有什么建议吗?

最佳答案

如果您非常热衷于使用Lock,您需要选择一个Lock 实现,因为您不能 实例化接口(interface)。根据 docs您有 3 个选择:

您可能正在寻找可能带有一些ConditionReentrantLock

这意味着您可以:

ReentrantLock lock = new ReentrantLock();

但是,如果您只需要锁定一小部分,则同步块(synchronized block)/方法会更干净(如@Leonidos 和@assylias 所建议)。

如果你有一个设置值的方法,你可以这样做:

public synchronized void setValue (var newValue)
{
value = newValue;
}

或者如果这是一个更大方法的一部分:

public void doInfinite ()
{
//code
synchronized (this)
{
value = aValue;
}
}

关于java - 如何在 Android 中创建锁 (concurrent.locks.Lock)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14186912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com