繁体   English   中英

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

[英]How do I create a Lock (concurrent.locks.Lock) in Android?

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

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

到现在为止还挺好。 但是,我不能让第一线工作。 看起来像是这样的:

Lock l = new Lock();

可能是正确的,但是eclipse报告说,“无法实例化类型Lock” - 而且不再存在。

有什么建议?

如果您非常热衷于使用Lock ,则需要选择Lock实现,因为您无法实例化接口。 根据文档您有3个选择:

您可能正在寻找具有某些ConditionReentrantLock

这意味着代替Lock l = new Lock(); 你会这样做:

ReentrantLock lock = new ReentrantLock();

但是,如果您需要锁定的只是一小部分,则同步块/方法更清晰(如@Leonidos和@assylias所建议的那样)。

如果您有一个设置值的方法,您可以:

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

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

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

仅仅因为Lock是一个接口而无法实例化。 使用它的子类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM