codecamp

Context对象

当Vert.x提供一个事件的处理程序或调用Verticle的开始或停止的方法,执行与Context相关联。一般Context是event-loop context 绑定特定的事件循环线程。因此,对于这方面的执行总是发生在该完全相同的事件循环线程。在worker verticles和运行内嵌阻止代码worker context的情况下将使用一个线程从worker线程池的执行关联。

若要获得context,请使用getOrCreateContext方法:

Context context = vertx.getOrCreateContext();

如果当前线程具有一个与它相关联的context,它重复使用context对象。如果不创建新实例的context。您可以测试您取得的context的类型:

Context context = vertx.getOrCreateContext();
if (context.isEventLoopContext()) {
  System.out.println("Context attached to Event Loop");
} else if (context.isWorkerContext()) {
  System.out.println("Context attached to Worker Thread");
} else if (context.isMultiThreadedWorkerContext()) {
  System.out.println("Context attached to Worker Thread - multi threaded worker");
} else if (! Context.isOnVertxThread()) {
  System.out.println("Context not attached to a thread managed by vert.x");
}

当您取得context对象时,您可以以异步方式在此context中运行代码。换句话说,您提交相同的context,但后来将最终运行任务:

vertx.getOrCreateContext().runOnContext( (v) -> {
  System.out.println("This will be executed asynchronously in the same context");
});

当几个处理程序在相同的context中运行时,他们可能想要分享数据。context对象提供方法来存储和获取在context中共享的数据。例如,它可以让你通过一些行动runOnContext运行数据:

final Context context = vertx.getOrCreateContext();
context.put("data", "hello");
context.runOnContext((v) -> {
  String hello = context.get("data");
});

context对象还可让您使用的config方法访问verticle配置。


Vert.x 退出
执行定期和延迟的操作
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

编写 TCP 服务器和客户端

编写 HTTP 服务器和客户端

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }