【问题标题】:Java - Reentrant WriteLock on static methodsJava - 静态方法上的可重入 WriteLock
【发布时间】:2013-08-29 15:44:03
【问题描述】:

如何在static 方法上使用WriteLock?这就是我得到的:

m_unitLock = new ReentrantReadWriteLock();
m_unitReadLock = m_unitLock.readLock();
m_unitWriteLock = m_unitLock.writeLock()

static List<unit> units = new ArrayList<Unit>();
...
public static addUnit(){
  m_unitWriteLock.lock(); // can not use this inside a static method
  units.add(unit);
  m_unitWriteLock.unlock();
}

m_unitWriteLock 定义为静态是否正确?你对这种情况有什么建议? tnx。

【问题讨论】:

  • 为什么方法是静态的?
  • @SotiriosDelimanolis:因为这将被分离的对象调用 1000 次。
  • 这不是 static 的好理由。也许您应该将其提取到您实例化的另一个类中。
  • 那么这个类会被实例化很多次,我得到too many open files 错误。
  • 实例化一个类不会打开一个新文件。

标签: java multithreading thread-safety reentrantlock


【解决方案1】:

是的,为什么不呢?

如果你的方法是静态的,锁也必须是静态的。 问题是:方法是否需要是静态的?但这取决于你要解决的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多