在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)如何设法做到这一点?
有什么想法吗?谢谢!
答案 0 :(得分:5)
一种选择是不仅在单独的线程中运行第三方代码,而且在单独的进程中运行。这是一个麻烦,但你可以随时杀死这个过程,并保证它能够正常工作。