如何限制第三方Java方法的执行时间

时间:2014-11-18 08:11:13

标签: java multithreading

在Java程序中,我需要执行第三个paryt java类的方法。我使用Class.forName来获取类,newInstance()来获取此类的对象:

Class  class  = Class.forName(className);
AClass object = (AClass) class.newInstance(); 

然后我执行并使用

获得所需方法的结果
ResultObject result = object.method();

到目前为止,这么好。但是如果我想限制方法的执行时间(即,如果方法在给定的秒数后没有停止,我想要终止此执行并忽略结果),则会出现问题。

理想的解决方案是在单独的线程中运行该方法,并在方法未及时完成时停止并销毁此线程。但不幸的是,一个线程无法停止(它的stop()方法已被弃用)并且我不能依赖第三方方法的正确中断行为。

有没有其他方法可以执行一个方法并完全控制它的执行(即能够随时杀死它)?我确信这是可能的 - 例如,Netbeans可以执行我的类(当我运行我的应用程序时)并且如果我按下停止按钮它可以杀死它。但Netbeans(或Eclipse或任何其他IDE)如何设法做到这一点?

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:5)

一种选择是不仅在单独的线程中运行第三方代码,而且在单独的进程中运行。这是一个麻烦,但你可以随时杀死这个过程,并保证它能够正常工作。