gpt4 book ai didi

java - 线程内调用的函数中的无限循环会导致线程保持 Activity 状态

转载 作者:行者123 更新时间:2023-12-02 00:03:46 27 4
gpt4 key购买 nike

public class Ex4 extends Thread {
boolean ans;
boolean change=false;

public boolean isPrime(long n, double maxTime) throws RuntimeException {
final Thread a;
Thread b;
final RuntimeException e;
final long num = n ;
final double mtime = maxTime;
a = new Thread(){
public void run(){
try{
ans = Ex4_tester.isPrime(num);
change=true;
}
catch ( RuntimeException exp){
throw exp;
};
}
};
a.start();
try {
sleep((long)mtime);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
if(a.isAlive()){
a.interrupt();
}
if(a.isInterrupted()){
throw new RuntimeException("time for check exceeded");
}
return ans;
}
}

一切正常,除了有时 Ex4_tester.isPrime 进入无限循环(没关系,它应该这样做)。即使线程被中断,进程仍然运行并且线程实际上并没有停止的问题

最佳答案

线程被中断并不会停止它。它只会导致线程脱离某些等待和 sleep 状态。要让线程根据另一个线程的输入退出无限循环,请对循环中的 Atomic<> 进行显式检查,并让控制线程将原子变量的状态修改为线程“a”将退出循环的位置。

关于java - 线程内调用的函数中的无限循环会导致线程保持 Activity 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326611/

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