小编Ste*_*edy的帖子

Vertx executeBlocking 导致许多线程

我正在使用 vertx 3.0 来运行一些 mysql 查询。因为该代码不是为异步操作而设计的,所以我使用了 executeBlocking。即使代码运行,当我使用 jconsole 监控我的服务器时,我发现超过 100 个线程大多数被命名为 vert.x-worker-thread-0、vert.x-eventloop-thread-1 和 vertx-blocked-thread-checker。这是由我的代码有什么问题引起的吗?

    public Handler<RoutingContext> getById() {
    return (routingContext) -> {
        HttpServerResponse response = routingContext.response();
        String id = routingContext.request().getParam("id");
        int idAsInt = Integer.parseInt(id);
        Vertx.vertx().executeBlocking(future -> {
                Person p = svc.getPerson(idAsInt);
                PersonDTO dto = new PersonDTO(p.getId(), p.getFirstname(), p.getName());
                future.complete(dto);
            }, res -> {
                if (res.succeeded()) {
                    JsonUtil.setJsonResponse(response, 200, Json.encodePrettily(res.result()));
                }
                else {
                    JsonUtil.setJsonResponse(response, 404, new JsonObject().put("failure", res.cause().getMessage()).toString());
                }
                response.end();
            }
        );
    };
}
Run Code Online (Sandbox Code Playgroud)

multithreading vert.x

4
推荐指数
1
解决办法
2234
查看次数

标签 统计

multithreading ×1

vert.x ×1