【发布时间】:2018-09-14 20:50:55
【问题描述】:
我注意到 Java 类有一些非常不寻常的地方。
如果我在类主体中实例化一个条件(来自锁),它不会实例化对象。这是一个例子:
private class ConcurrentQ{
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
Lock readLock = readWriteLock.readLock();
Lock writeLock = readWriteLock.writeLock();
Condition emptyList = readLock.newCondition(); //PROBLEM!
...
}
如果我做了ConcurrentQ q = new ConcurreqntQ(),它不会实例化,但如果删除//PROBLEM! 行它工作正常。
我能知道为什么吗?
【问题讨论】:
-
你检查documentation了吗?
-
@shmosel,对不起,我没有,我应该有。那么如何使用
ReadWriteLocks的条件? -
Re, "... 它不会实例化" 如果您在问题中包含任何错误消息的文本可能会有所帮助。
-
可以在写锁上创建条件。
-
new ConcurrentQ()不能什么都不做。它要么返回对新创建的ConcurrentQ实例的引用,要么抛出异常。如果它抛出一个异常,那么就会有一条消息,除非……你写的代码会捕获异常并忽略它吗?
标签: java multithreading