球衣 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());
}
这里的这个例子允许我将消息发送到消息队列进行处理。异步响应将允许您随心所欲地处理异步线程。顺便说一句,除非你创建一个新的执行线程,否则它将是执行代码的同一个线程。如果是正交的。
在 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());
}
这里的这个例子允许我将消息发送到消息队列进行处理。异步响应将允许您随心所欲地处理异步线程。顺便说一句,除非你创建一个新的执行线程,否则它将是执行代码的同一个线程。如果是正交的。