gpt4 book ai didi

java - 如何中断这个runnable

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

我在 StackOverflow 中阅读了很多关于通过抛出 InterruptedException 来中断线程的问题和答案。

但大多数答案都只使用 for 循环,并且有时他们会检查线程是否被中断:Thread.currentThread().isInterrupted().

我的代码是这样的:

   public class UploadVideoRunnable implements Runnable {

@Override
public void run() {
isUploaded = new uploadMedia(title, uri);
}
}

我应该如何/在哪里添加代码来检查线程是否被中断?

抱歉,如果这是一个菜鸟问题,但我已经在谷歌上搜索了很多,但没有找到答案。

谢谢

编辑:更新代码,uploadMedia 是一个类,不是方法

最佳答案

这里的“打断”需要“配合”。

这意味着:你只能中断调用......确实包含这种循环结构:

while (notDone) { doSomething(); Thread.sleep(); }

或类似的东西。这意味着:您将不得不查看该方法 uploadMedia() 并查看是否允许进行此类更改。因此,您可以将其更改为:

while (notDone) { 
if(interrupted) {
notDone = false;
} else {
doSomething();
Thread.sleep();
}
}

当然,以上更像是“伪代码”;您必须填写详细信息。

或者,您可以查看 ExecutorServices;因为有一些方法可以强行阻止它们;见here

编辑:这不应该改变任何事情。你看——你在那里调用了一个方法;该类的构造函数。当然,该构造函数将调用其他 方法;其中一种其他方法是运行较长时间以完成其上传工作的方法。

最后:请注意 interrupted 也可以是类似的

if (externalThingy.hasBeenCancelled()) {

意思是:你可能需要为你的类添加另一个参数; Uploader 类可以通过某种方式查询以确定它是否应该停止当前正在做的事情!

关于java - 如何中断这个runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39492193/

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