Java Thread用于Java EE应用程序中的后台服务(设置守护程序和优先级)?

时间:2016-11-04 18:27:16

标签: java multithreading java-ee web

我正在使用Java代码生成一个生成大文件的服务(这是BIRT中的一个报告),我需要花很多时间才能解决这个问题的最佳方法

daemon = true或 daemon = false

和优先级

new Thread(new Runnable() {
                public void run(){
                    try { 
                     task.run();
                     engine.destroy( );
                    }
                     catch ( EngineException e1 ) {
                         System.err.println( "Report " + reportFilepath + " run failed.\n" );
                         System.err.println( e1.toString( ) );
                     }
                }
        }).start();

2 个答案:

答案 0 :(得分:1)

在Java EE中创建new Thread()被认为是不好的做法。相反,您应该使用ManagedExecutorService(MES)等服务并向其提交runnable。

使用MES而不是运行自己的线程的好处是,MES使用的资源可以由Java EE应用服务器控制。

现在回答有关守护程序线程和优先级的问题。

守护程序:向MES提交任务始终是非阻塞的,并且可以选择检查任务的结果,因此这实际上使这些任务成为守护程序线程。

优先级:我不知道控制线程优先级的Java EE标准方法。您必须检查应用程序服务器实现,以查看在任务提交期间是否存在可以传递的属性以指示线程优先级。

答案 1 :(得分:0)

守护程序线程和普通线程之间只有一个区别:正常运行的线程的存在将阻止JVM自行关闭,但是运行的守护程序线程的存在不会。对性能没有影响