不幸的是,我们不得不调用一个有时永远不会返回的方法,并且永远冻结调用它的线程。幸运的是,实际调用与系统中的其他东西几乎没有交互,并且不返回任何值。所以我们在想,在我们可以修复有问题的代码之前,我们需要在一个单独的线程中运行调用,我们可以监控它并在它超过超时时中断。
显然比我更聪明的人已经解决了这个问题并将他们的礼物留在了并发包中,因为这将是我第一次使用并发包中的任何东西,我想确认我正在选择最好的方法。
所以我想我会通过调用 Excutors.newSingleThreadExecutor 来获得一个 ExecutorService,向它提交一个 Runnable,然后调用接受超时作为参数的 Future.get() 的重载。
要执行的实际任务只是调用一个对象上的单个 void 方法,我可以将其传递给 Runnable 的构造函数。
如果这是正确的方法,或者接近,如果您对自己的时间感到慷慨,我也非常感谢一个简短的代码示例。:)
谢谢