• Curator使用:(二)异步调用


    代码##

        ExecutorService es = Executors.newFixedThreadPool(2);
        //带线程池的异步接口
        cc.create().inBackground((client,event)->{
        //pool-3-thread-1,CuratorEventImpl{type=CREATE, resultCode=0, path='/abc', name='/abc', children=null, context=null,stat=114,114,1573797468244,1573797468244,0,0,0,0,13,0,114, data=null, watchedEvent=null, aclList=null, opResults=null}  
            System.out.println(Thread.currentThread().getName()+","+event);
    
        },es).forPath("/abc");
    
        //不带线程池的异步接口
        cc.delete().inBackground((client,event)->{
    
        //main-EventThread,CuratorEventImpl{type=DELETE, resultCode=0, path='/abc', name='null', children=null, context=null, stat=null, data=null, watchedEvent=null, aclList=null, opResults=null}        
            System.out.println(Thread.currentThread().getName()+","+event);
    
        }).forPath("/abc");
    
        Thread.sleep(Integer.MAX_VALUE);
    

    概念##

    1.inBackground() 该方法就是添加一个异步的回调方法,参数是BackgroundCallback接口,是一个函数式接口。
    2.BackgroundCallback的接口参数为client(当前客户端实例)及event(服务端事件)
    3.事件类型,CuratorEventType,
    包含如下信息 {type=DELETE, resultCode=0, path='/abc', name='null', children=null, context=null, stat=null, data=null, watchedEvent=null, aclList=null, opResults=null}
    type对应的就是操作类型,比如delete对应的delete(),create对应create()等,resultCode是响应码,0代表成功
    4.线程池es的作用,通过名称可以看到,默认情况下都是使用main-EventThread线程来串行执行,如果耗时较长会有影响,可以通过定制线程池来缓解这种情况。

  • 相关阅读:
    [导入]在.NET下如何实现密码Hash化
    [导入]强大的.NET反编译工具Reflector及插件
    [导入]XML数据岛(XML Data Island)
    验证视图状态 MAC 失败。处理办法
    ASP.NET格式化字符串
    .NET 开发框架技术资料搜集
    网页中图片大小自动调整三种方法
    用户 'azhk' 登录失败。原因: 未与信任 SQL Server 连接相关联。
    jstl及el表达式笔记
    杰普Core Java课程笔记1
  • 原文地址:https://www.cnblogs.com/june777/p/11865701.html
Copyright © 2020-2023  润新知