【发布时间】:2019-10-04 02:54:36
【问题描述】:
在以下UserResource类中:
public class UserResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("/users")
public void createUser() {
//JerseyClient is needed to send a REST request to another RESTful service
}
}
JerseyClient 需要向评论中提到的另一个 RESTful API 发送请求。
由于同时可能有多个线程调用此UserResource,JerseyClient 可能应该在每个线程的每个调用中初始化以保证线程安全。但是,提到的JAX-RS Client
客户端是管理客户端通信基础架构的重量级对象。 Client 实例的初始化和处置可能是一项相当昂贵的操作。因此建议在应用程序中只构建少量的客户端实例。客户端实例在被释放之前必须正确关闭,以避免资源泄漏。
根据文档,在createUser主体内初始化JerseyClient可能昂贵,从而带来性能问题。
问题:如何以线程安全的方式高效优化JerseyClient实例的数量?
【问题讨论】:
标签: java multithreading jersey jax-rs