2012-03-13 21 views
0

我称之为执行后台操作的Java文件。由于在后台执行的线程(在另一个java文件中),我无法将结果返回给jsp页面。已知return和system.exit(0)不能同时使用。无论如何,要停止可见java文件中的线程并返回结果。停止在后台执行一个线程,然后返回结果

回答

1

你可以受益于更仔细地制定你的问题。没有“线程在另一个Java文件中执行”这样的事情,所以不清楚你的意思到底是什么。

有没有简单的Java /安全的方式终止任意线程。通常最简单的办法是使用ExecutorService,提交你的工作,并坚持在返回Future对象,你可以使用后获得的结果或取消作业执行。如果您希望这样做,您也可以在不等待作业完成的情况下关闭ExecutorService。在这种情况下,显然你的工作应该写在取消注意的位置,所以没有不良副作用。

0

如果将线程封装在try {...} catch(InterruptedException ex){...}块中,则可以使用Thread.interrupt()方法(http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#interrupt())。这会将线程发送到中断处理程序,您可以在返回结果之前清理所需的任何内容。

我认为你需要在运行循环的某个地方检查thread.isInterrupted(),如果是这样,就跳出到中断处理程序的循环,因为有时从主程序调用.interrupt()不会导致线程跳转到中断处理程序。关于此的所有细节都在我之前链接的页面上。

0

您的意图不是很清楚,但您可能想看看Java FutureScheduledFuture接口以及使用它们的多线程类。

相关问题