gpt4 book ai didi

java - 停止不包含 while 语句的线程

转载 作者:行者123 更新时间:2023-12-01 07:47:08 25 4
gpt4 key购买 nike

所有答案都是关于如何停止某个线程的循环,但是如果我没有循环,但我仍然想在执行/处理所有行之前停止线程怎么办?

例如,我有一个线程,通常运行 7-10 秒,然后终止(终止):

mThread = new Thread(new Runnable() {
@Override
public void run() {

// some code here
// some here
// some here
// some here
// some here
// all lines takes about 7-10 seconds

}
});

如果我启动了一个线程,并且在 2 或 3 秒后我需要停止它,那么如何做到这一点并且不等待 10 秒?

最佳答案

如果你的线程没有被阻塞,并且实际上正在处理东西,那么中断它可能没有帮助。您可以对线程进行编码以检查当前线程上的中断标志,然后在发现该标志已设置时停止。

这是检查当前线程是否已被中断的方法。

Thread.currentThread().isInterrupted();

所以你必须像这样编写你的线程......

mThread = new Thread(new Runnable() {
@Override
public void run() {

// some code here
if (Thread.currentThread().isInterrupted()) return;
// some here
if (Thread.currentThread().isInterrupted()) return;
// some here
if (Thread.currentThread().isInterrupted()) return;
// some here
if (Thread.currentThread().isInterrupted()) return;
// some here
// all lines takes about 7-10 seconds
}
});

然后你可以继续中断mThread,它就会有效果。尽管它仍然会继续处理当前的some here步骤。

关于java - 停止不包含 while 语句的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49449901/

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