gpt4 book ai didi

java - Executors.newSingleThreadExecutor() 是运行我需要超时的任务的合适选择吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:39 25 4
gpt4 key购买 nike

不幸的是,在中期,我们不得不调用一个有时永远不会返回的方法,并永远卡住调用它的线程。幸运的是,实际调用与系统中的其他部分交互很少,并且不返回任何值。所以我们认为,在我们能够修复有问题的代码之前,我们需要在一个单独的线程中运行调用,我们可以监控该线程并在它超过超时时中断。

显然比我聪明的人已经解决了这个问题并将他们的礼物留在并发包中,因为这将是我第一次使用并发包中的任何东西,我只想确认我正在选择最佳方法。

所以我想我会通过调用 Excutors.newSingleThreadExecutor 获得一个 ExecutorService,向它提交一个 Runnable,然后调用接受超时作为参数的 Future.get() 的重载。

要执行的实际任务只是对我可以传递给 Runnable 的构造函数的对象调用单个 void 方法。

如果这是正确的或接近的方法,如果您愿意花时间,我也非常希望能提供一个简短的代码示例。 :)

谢谢

最佳答案

Clearly smarter people than I have already solved this problem

实际上它并没有真正解决恕我直言。

要中断任务,它必须表现良好并检查中断,否则它实际上不会停止。但是,如果它表现良好,则不太可能需要首先将其杀死。

如果您确定没有可能的副作用,您可以使用已弃用的 Thread.stop()。这需要使用普通线程。即使您“知道”这不会导致问题,这也不理想,并且再次使用标志来停止任务是首选。

关于java - Executors.newSingleThreadExecutor() 是运行我需要超时的任务的合适选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com