Java ConditionVariable在构造函数中的使用
此代码作为构造函数的一部分用于初始化实例。 我想知道ConditionVariable的确切用途是什么 我唯一的猜测是,在初始化完成之前,调用线程将无法获取该类的锁。我的想法正确吗Java ConditionVariable在构造函数中的使用,java,android,multithreading,condition-variable,Java,Android,Multithreading,Condition Variable,此代码作为构造函数的一部分用于初始化实例。 我想知道ConditionVariable的确切用途是什么 我唯一的猜测是,在初始化完成之前,调用线程将无法获取该类的锁。我的想法正确吗 final ConditionVariable conditionVariable = new ConditionVariable(); new Thread() { @Override public void run() { synchronized (SimpleCache.this) {
final ConditionVariable conditionVariable = new ConditionVariable();
new Thread() {
@Override
public void run() {
synchronized (SimpleCache.this) {
conditionVariable.open();
initialize();
}
}
}.start();
conditionVariable.block();
这是指向完整代码的链接:
如果没有剩下的代码,就无法确定这一点,但这似乎是一种在后台线程上运行复杂初始化代码的稍微有点粗糙的方法,但仍然让主线程等待初始化完成。对
initialize()
的调用发生在后台,但是conditionVariable.block()
会等待它完成
不过,我想知道问题的关键是什么。如果
.block()
调用确实阻塞了主线程,那么它会像直接初始化一样绑定主线程。可能.block()
进行一些轮询,但也允许运行GUI事件或其他操作。如果没有代码,很难确定…如果不显示打开和阻止的代码,您将得到的最好结果是猜测。。。此外,在构造函数中启动线程也很难闻…@assylas这在构造函数中不是一个威胁启动。一个注释性的内部类扩展了创建和实例化的thread类,然后它得到了started@KumarAbhinav-你是从哪里得到这些信息的?@thelost介意如果你说的是外层阶级,那么线程可能是一个内部类,作为构造函数的一部分class@KumarAbhinav“此代码用作构造函数的一部分…”