Skip to content

Instantly share code, notes, and snippets.

@bohrqiu
Created July 17, 2015 10:11
Show Gist options
  • Save bohrqiu/c8d8d19b9ed179d46390 to your computer and use it in GitHub Desktop.
Save bohrqiu/c8d8d19b9ed179d46390 to your computer and use it in GitHub Desktop.

Revisions

  1. bohrqiu created this gist Jul 17, 2015.
    36 changes: 36 additions & 0 deletions gistfile1.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,36 @@
    @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;
    }

    }
    }