问题遇到的现象和发生背景
创建zookeeper实例需要时间,所以会阻塞线程直到创建完成,但是
判断zookeeper实例构造完成的的代码却写在了传入监听器的process方法中,
而process方法我学习的是只有在监听内容变化时候才会调用,难道在构造zookeeper时候就监听了某些内容?
为什么在构造方法执行时候会调用其中的process方法?
问题相关代码,请勿粘贴截图
CountDownLatch countDownLatch = new countDownLatch(1);
zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
if (watchedEvent.getState() == Event.KeeperState.SyncConnected){
countDownLatch.countDown();
}
}
});
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}