首页 > 解决方案 > 如何使类成员不在线程之间共享(2个浏览器会话)

问题描述

我正在实现一个 Web 应用程序。我发送 1 个 ajax 请求来调用 1000 多个 api 请求,并在完成后将结果保存到类成员中。

同时,我发送另一个异步请求来轮询请求是否完成,然后将结果返回给浏览器。

问题是当有两个用户同时发送请求时,类成员在两个浏览器之间共享。

问题是如何使类成员不在例如 chrome 浏览器的两个选项卡之间共享。

注意:我使用 springboot java 来实现。

Sample code
@RestController
public class RestController{
private CompletableFuture< CopyOnWriteArrayList< Object > > results; 
@Autowired
private RestService restService;

@PostMapping( "/sendRequest" )
private void sendRequests(....){
  results = restService.sendRequests(..); // save result to class member
}

@GetMapping("/pollResult")
private JsonResponse pollResult(..){
  //check if result is not null (async request)

return response;
}


}

一个.html

ajax
{
url // send api request

}


another Ajax call to poll result every 5 seconds

标签: javaspring-bootsessionthread-safetyclass-members

解决方案


推荐阅读