这是在Java EE中使用Timer的好方法

时间:2013-11-22 14:52:58

标签: multithreading java-ee jax-rs glassfish-4

我有一项任务是在HTTP Post Request之后在后台执行此操作, 所以我可以这样在Java7 EE中这样做。 (他们说Java7 EE可以使用JSE concurrencies)。所以这是我的代码:

@POST public String contactMe( @FormParam("name") String name, @FormParam("email") String email, @FormParam("website") String website, @FormParam("message") String message) {
    System.out.println("you have sent name " + name + "  email  " + email + "  website " + website + "   message " + message);



    /*methode Timer*/
    Timer timer = new Timer();
    MyTimerTask myTimerTask=new MyTimerTask();
    timer.schedule(myTimerTask,10000);
    //I have to do something n back ground that take 10 seconds at least


    return "<h1>DONE</h1>";
}

我很困惑可能有更好的方法来处理企业世界中的这类问题,因为内存管理与桌面应用程序不同。 提前致谢。

2 个答案:

答案 0 :(得分:1)

最后,我得到了答案,我对JEE7多线程工具感到满意:

 @Stateless
 public class ReportBean {
 @Resource  
 private ManagedThreadFactory threadFactory;
 public void runReports() {
 Thread thread = threadFactory.newThread(new Runnable());
 thread.start();
 }

我在工作中使用过这种豆子...... Java EE7提供了一种使用JAVA SE的新方法,该方法由Web容器管理,而不是由JVM管理。

答案 1 :(得分:0)

计时器的用途是什么?

您的代码会收到一些GET信息,然后等待10秒钟,然后开始执行myTimerTask。

编辑:

稍微检查一下你的帖子:看起来你想要同步执行任务;如果确实如此,那就执行timertask。

但是你的评论表明你希望在后台执行任务,但后来我不明白为什么你似乎暗示你要等待10秒。