我是Spring Boot的新手,并尝试使用Spring Boot实现多线程。当带有URL的REST调用时,我要做的就是创建新的Selenium Web驱动程序实例并执行测试,一旦完成,我将以JSON返回所需的响应。
这里的真正问题是,当我在执行程序上使用shutdown()时,我只能击中端点一次,并且收到响应,但是当我再次单击时,它没有击中控制器,因此没有响应回来了我只有先前请求的回复。
我厌倦了不对执行器执行关机操作,当我这样做时,能够多次击中端点,但是响应与所有请求都混杂在一起。有人可以让我知道我在做什么错。
下面是代码段
控制器类
@GetMapping(path="/**/***", produces = "application/json")
public List<ResponseBean> returnResponse(@RequestHeader(value = "url") String url)
throws InterruptedException {
try {
resp = service.getResponse(url);
return resp;
} catch (Exception e) {
} finally {
}
return null;
}
线程类
for (int i = 0; i < splittedUrls.length; i++) {
StartMyThreads startMyThreads = beanFactory.getBean(StartMyThreads.class);
startMyThreads.setUrl(splittedUrls[i]);
taskExecutor.execute(startMyThreads);
Thread.sleep(CIConstants.THREAD_SLEEP_TIME_SPRING_AUTO_INITIALIZER);
}
taskExecutor.destroy();
System.out.println(taskExecutor.getActiveCount() + " " + taskExecutor.getPoolSize() + " "
+ taskExecutor.getCorePoolSize());
for (;;) {
int count = taskExecutor.getActiveCount();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (count == CIConstants.ZERO) {
taskExecutor.shutdown();
break;
}
}
我可以知道如何通过执行程序服务将其归档以多次击中我的端点。
谢谢