我正在使用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();
答案 0 :(得分:1)
在Java EE中创建new Thread()
被认为是不好的做法。相反,您应该使用ManagedExecutorService
(MES)等服务并向其提交runnable。
使用MES而不是运行自己的线程的好处是,MES使用的资源可以由Java EE应用服务器控制。
现在回答有关守护程序线程和优先级的问题。
守护程序:向MES提交任务始终是非阻塞的,并且可以选择检查任务的结果,因此这实际上使这些任务成为守护程序线程。
优先级:我不知道控制线程优先级的Java EE标准方法。您必须检查应用程序服务器实现,以查看在任务提交期间是否存在可以传递的属性以指示线程优先级。
答案 1 :(得分:0)
守护程序线程和普通线程之间只有一个区别:正常运行的线程的存在将阻止JVM自行关闭,但是运行的守护程序线程的存在不会。对性能没有影响