pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
线程发起请求
package com.example.demo;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.concurrent.Callable;
public class ConcurrentRequestTask implements Callable<String> {
private final String url;
public ConcurrentRequestTask(String url) {
this.url = url;
}
@Override
public String call() throws Exception {
// 创建RestTemplate实例
RestTemplate restTemplate = new RestTemplate();
// 设置请求Header
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer token123");
headers.set("Content-Type","application/json");
// 设置请求参数
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("key1", "value1");
map.add("key2", "value2");
// 创建请求实体
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(map, headers);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
String result = responseEntity.getBody();
return result;
}
}
Test
package com.example.demo;
import org.springframework.web.client.RestTemplate;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class ConcurrentRequestTest {
public static void main(String[] args) throws Exception {
String url = "http://localhost:8080/api";
ExecutorService executorService = Executors.newFixedThreadPool(10);
int taskCount = 10;
Future<String>[] futures = new Future[taskCount];
for (int i = 0; i < taskCount; i++) {
futures[i] = executorService.submit(new ConcurrentRequestTask(url));
}
for (Future<String> future : futures) {
System.out.println(future.get());
}
executorService.shutdown();
}
}
API
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
@RestController
public class ApiController {
@Autowired
private RestTemplate restTemplate;
@PostMapping("/api")
public String apiEndpoint(@RequestBody Map<String,Object> map) {
System.out.println("param:"+map.toString());
// 这里可以添加业务逻辑
return "Response";
}
}