球衣 2 中的线程

Thread in Jersey 2

在 Jersey 2.22 中,使用以下代码:

@Path("/header")
public class TestResource {

    @GET
    public Response get(){
    ...
    }

    @Path("sub")
    public Sub sub(){
        return new Sub();
    }
}

public class Sub {

    @GET
    public Response get(){
    ...
    }

    @Path("sub")
    public SubSub sub(){
        return new SubSub();
    }
}

public class SubSub {

    @GET
    public Response get(){
    ...
    }

    @Path("sub")
    public SubSubSub sub(){
        return new SubSubSub();
    }
}

public class SubSubSub {

    @GET
    public Response get(){
    ...
    }
}

是否保证对于/header/sub/sub/sub,从TestResource.sub()一直遍历到SubSubSubSubSubSubSub...的get()方法时使用同一个线程?

如果您担心线程问题,您应该使用 AsyncResource 来处理线程池和超时等问题。

@POST
@Path("bid/{exchangeId}/{key}")
public void handleBid(@PathParam("exchangeId") final String exchangeId, @PathParam("key") final String key,
            final OrtbBidRequest request, @Suspended final AsyncResponse asyncResponse) throws FilterException, IOException {

    // Timeout for clarity.
    asyncResponse.setTimeout(timeoutMs, TimeUnit.MILLISECONDS);
    asyncResponse.setTimeoutHandler(timeoutHandler);

    // Sending no data as an example
    asyncResponse.resume(Response.noContent().build());
}

这里的这个例子允许我将消息发送到消息队列进行处理。异步响应将允许您随心所欲地处理异步线程。顺便说一句,除非你创建一个新的执行线程,否则它将是执行代码的同一个线程。如果是正交的。