Spring RestController中的Spawn线程

时间:2016-10-03 02:23:52

标签: java spring multithreading tomcat thread-safety

我有一些关于线程的奇怪问题......需要一些建议。

我在Tomcat8上运行Spring4 webapp。我已经使用Spring MVC配置了restful端点来接收请求进入" / rs / event / book / create"

@RequestMapping( 
        value = { "/rs/event/book/create" }, 
        method = RequestMethod.POST, 
        consumes=MediaType.APPLICATION_JSON_VALUE,
        produces=MediaType.APPLICATION_JSON_VALUE
)
public String bookCreate( @RequestBody Map<String,Object> jsonData ) { ... }

我会在时机成熟的时候从用户界面对此URL进行Ajax调用。

我希望请求转到&#34; / rs / event / book / create&#34;触发三个线程,每个线程对Zapier进行HTTP调用并通过,而不等待Zapier或客户端等待响应来自&#34; / rs / event / book / create&#34; (这是一个暂时的事情,在我们有时间找出更优雅的解决方案之前,几乎就像一个POC。)

问题是我害怕只是临时产生线程而不是完成或变成僵尸。

产生三个一次性线程的最佳/最安全的方法是什么,以便请求进入&#34; / rs / event / book / create&#34;会解雇三个线程并通过? (我不是在谈论Spring @Async)

感谢您帮助朋友!

更新

我想我在这里真正要求的是,这对我来说是否足以让我长期陷入困境?

@RequestMapping( 
        value = { "/rs/event/book/create" }, 
        method = RequestMethod.POST, 
        consumes=MediaType.APPLICATION_JSON_VALUE,
        produces=MediaType.APPLICATION_JSON_VALUE
)
public String bookCreate( @RequestBody Map<String,Object> jsonData ) {
    new Thread() {
        public void run() {
            // HTTP call to Zapier
        }
    }.start();

    new Thread() {
        public void run() {
            // HTTP call to Zapier
        }
    }.start();

    new Thread() {
        public void run() {
            // HTTP call to Zapier
        }
    }.start();

    return "";
}

0 个答案:

没有答案