【发布时间】:2019-05-21 06:59:09
【问题描述】:
我的应用程序想要与 REST 服务器通信。首先,我们需要进行身份验证,作为响应,我们将收到一个客户端令牌。此令牌的有效期为 30 分钟,对于其余的通信,此客户端令牌需要作为标头存在。
我计划实现一个处理 REST 通信的单例类。不遵循 ENUM 方法(如许多其他线程中提到的)的原因是因为需要在运行时进行休息调用并填充客户端令牌。
public class RESRService {
private static RESRService RESTSERVICEINSTANCE;
private String clientToken;
private RESRService(){
clientToken = //make a rest call to authenticate and get the client
//token from reponse
}
public static RESRService getInstance(){
if(RESTSERVICEINSTANCE == null){
RESTSERVICEINSTANCE = new RESRService();
}
return RESTSERVICEINSTANCE;
}
public void makeRestCall(String requestSpecificInfo){
//set client token to header
//create JSON body using requestSpecificInfo
//make rest call
}
}
这里的主要挑战是这个类将被多个线程同时使用(客户端令牌对于所有线程都是相同的)。我的疑问是关于我们进行 REST 调用以填充客户端令牌的初始化部分。如果 REST 调用需要几秒钟来设置客户端令牌,线程之间是否存在歧义的可能性。如果是,您认为实现这一点的最佳方式是什么?
【问题讨论】:
标签: java multithreading singleton