我被vertx实例搞糊涂了。第一次看到文档时,我认为实例意味着事件循环线程的数量 当我深入研究源代码(vertx 2.1.2)时,我发现Verticle实例意味着事件循环线程组中的任务。事件循环线程总是等待选择器并运行任务。
是否需要在vertx中有Verticle实例?由于vertcle只运行一次事件循环。更确切地说,事件循环线程运行Verticle start 方法并将其抛弃,它就像一个条目一样,就是这样。
如何收集多个事件的结果?
脚本当多个事件回调时,它有可能多个事件循环线程将执行处理程序,因此存在一个竞争条件,即作业将多次运行。我怎么能避免它?
任何解决方案都将得到解决。
答案 0 :(得分:0)
是否需要在vertx中有Verticle实例?
没有。这不是必需的。您不必创建Verticle类的任何实例。
如何收集多个事件的结果?
问题
当多个事件回调时,它有可能多个事件循环线程将执行处理程序,因此存在一个竞争条件,即作业将多次运行。我怎么能避免它?
通过事件总线发送的每个查询都将具有相应的Handler对象。他们不会共享同一个Handler实例。对于查询的每个响应,调用它对应的Handler对象的handle()方法。因此,在特定的Handler对象上没有竞争条件的位置。