我正在开发基于Java EE的应用程序,我需要使用itext API进行PDF报告。 基本上我的要求是,如果报告生成时间超过1分钟,则停止它。
因此,我正以这种方式实施此业务要求
Thread t = new Thread(myPojoclass);
long startTime = System.currentTimeMillis();
long endTime = startTime + 60000;
t.start();
while (System.currentTimeMillis() < endTime)
{
}
t.interrupt(); // Tell the thread to stop
如上所述,在我的myPojoclass
内,这是一个实现Runnable
接口的Thread,在其run方法中,它包含连接到Database
并获得结果并将其提供给ArrayList
如果这是正确的,请告诉我?
答案 0 :(得分:2)
有一个很好的解决方案here。由于您的线程正在连接到数据库,我强烈建议(如果您尚未执行此操作)捕获InterruptException
异常,并在其块内关闭连接并在必要时回滚。
答案 1 :(得分:0)
您可以使用执行者服务
ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);
final Future handler = executor.submit(new Callable(){ ... });
executor.schedule(new Runnable(){
public void run(){
handler.cancel();
}
}, 60000, TimeUnit.MILLISECONDS);