请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

watch机制相关

childrenCache.start(StartMode.POST_INITIALIZED_EVENT);
	
	List<ChildData> childDataList = childrenCache.getCurrentData();
	System.out.println("当前数据节点的子节点数据列表:");
	for (ChildData cd : childDataList) {
		String childData = new String(cd.getData());
		System.out.println(childData);
	}
	
	childrenCache.getListenable().addListener(new PathChildrenCacheListener() {
		public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
			if(event.getType().equals(PathChildrenCacheEvent.Type.INITIALIZED)){
				System.out.println("子节点初始化ok...");
			}
			
			else if(event.getType().equals(PathChildrenCacheEvent.Type.CHILD_ADDED)){
				String path = event.getData().getPath();
				if (path.equals(ADD_PATH)) {
					System.out.println("添加子节点:" + event.getData().getPath());
					System.out.println("子节点数据:" + new String(event.getData().getData()));
				} else if (path.equals("/super/imooc/e")) {
					System.out.println("添加不正确...");
				}
				
			}else if(event.getType().equals(PathChildrenCacheEvent.Type.CHILD_REMOVED)){
				System.out.println("删除子节点:" + event.getData().getPath());
			}else if(event.getType().equals(PathChildrenCacheEvent.Type.CHILD_UPDATED)){
				System.out.println("修改子节点路径:" + event.getData().getPath());
				System.out.println("修改子节点数据:" + new String(event.getData().getData()));
			}
		}
	});
	
	Thread.sleep(10000000);

这段代码关于watch监听是内部是怎么实现的呢?这是一个主线程,执行到了Thread.sleep语句,主线程应该挂起了,为什么还能监听呢,是不是watch事件有注册到其他异步线程中?

正在回答 回答被采纳积分+3

1回答

风间影月 2018-10-02 19:31:08

他其实是一种异步回调机制,和netty封装的nio异步事件通知类似

1 回复 有任何疑惑可以回复我~
  • 提问者 慕粉1124262302 #1
    那客户端的心跳包是不是也是主线程异步发送的  Sleep了主线程  关于昨天疑问sleep主线程并不影响心跳机制
    回复 有任何疑惑可以回复我~ 2018-10-02 19:54:35
  • 风间影月 回复 提问者 慕粉1124262302 #2
    心跳其实就是一种读写机制,多久没有收到请求,就认定客户端已死,和netty 心跳一个道理,只要有读写,不管你是同步异步都是心跳
    回复 有任何疑惑可以回复我~ 2018-10-02 19:58:04
  • 提问者 慕粉1124262302 回复 风间影月 #3
    那就是说存在主线程sleep超过timeout时间的条件,可能也有异步发送心跳包的可能性吗
    回复 有任何疑惑可以回复我~ 2018-10-02 20:20:37

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信