Skip to content

Instantly share code, notes, and snippets.

@bohrqiu
Created July 17, 2015 10:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bohrqiu/c8d8d19b9ed179d46390 to your computer and use it in GitHub Desktop.
Save bohrqiu/c8d8d19b9ed179d46390 to your computer and use it in GitHub Desktop.
spring async web
@RestController
public class AsyncController {
private static final Logger logger = LoggerFactory.getLogger(AsyncController.class);
private static AtomicInteger ai = new AtomicInteger();
@Autowired
private UserQueryService userQueryService;
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10);
@RequestMapping("async1")
public DeferredResult<String> async1(ModelMap modelMap) {
final int idx=ai.getAndIncrement();
logger.info("async1:{} enter", idx);
String str = userQueryService.query("xxxx");
if (str.equals("fail")) {
DeferredResult<String> deferredResult = new DeferredResult<>();
scheduledExecutorService.schedule(new Runnable() {
@Override
public void run() {
String result = userQueryService.query("xxxx");
logger.info("async1:{} leave",idx);
deferredResult.setResult(result);
}
}, 10, TimeUnit.SECONDS);
return deferredResult;
} else {
DeferredResult<String> deferredResult = new DeferredResult<>();
deferredResult.setResult(str);
return deferredResult;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment