在Android中,处理线程中断的方法如下:
Runnable
接口,并将其传递给Thread
类的构造函数。例如:class MyRunnable implements Runnable {
@Override
public void run() {
// 线程执行的代码
}
}
Thread myThread = new Thread(new MyRunnable());
run()
方法中,使用try-catch
语句捕获InterruptedException
异常。当线程被中断时,会抛出此异常。在catch
块中,您可以处理中断信号,例如设置一个标志变量,以便在稍后检查线程是否已被中断。class MyRunnable implements Runnable {
private volatile boolean isInterrupted = false;
@Override
public void run() {
try {
while (!isInterrupted) {
// 线程执行的代码
}
} catch (InterruptedException e) {
// 处理中断信号
isInterrupted = true;
}
}
public boolean isInterrupted() {
return isInterrupted;
}
}
interrupt()
方法。这将设置线程的中断标志,而不会立即停止线程。线程需要定期检查其中断标志,并在适当的时候响应中断请求。// 启动线程
myThread.start();
// 在其他线程中停止当前线程
myThread.interrupt();
run()
方法中的某个特定点停止线程,可以使用Thread.interrupted()
或Thread.isInterrupted()
方法检查中断标志。Thread.interrupted()
会清除中断标志并返回其值,而Thread.isInterrupted()
仅返回中断标志的值而不清除它。class MyRunnable implements Runnable {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// 线程执行的代码
// 检查是否需要停止线程
if (someCondition) {
Thread.currentThread().interrupt();
break;
}
}
}
}
请注意,不要使用Thread.stop()
方法来停止线程,因为这会导致资源泄漏和其他问题。相反,请使用中断机制来安全地停止线程。