【发布时间】: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