gpt4 book ai didi

java - 在android中重复启动和停止一个线程

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:55 27 4
gpt4 key购买 nike

这里我有一个名为 Method1() 的方法,该方法将在奇数时间调用该方法时启动一个线程,并在偶数时间停止该方法。当我通过 Button.onClick 事件调用该方法时,下面的代码 fragment 有效。这是暂停和恢复线程的正确方法吗?我的方法线程安全吗?

Thread sampleThread = null;
..
..
..
private void Method1(){

if(sampleThread == null){

sampleThread = new Thread(){
@Override
public void run() {

while(true) {

Log.d(TAG,"Inside Thread");

}
}
};
sampleThread.start();

}else {

sampleThread.interrupt();

}
}

最佳答案

如果Method1会被频繁调用,我建议你最好设置一个标志,启用它恢复线程,禁用它暂停线程。因为如果你频繁创建和销毁线程,许多 CPU 和内存将被浪费。您可以这样使用:

public class MyThread extends Thread{
volatile boolean isRunning = true;//make sure use volatile keyword
@Override
public void run() {

while(isRunning) {

Log.d(TAG,"Inside Thread");

}
}
public void setRunning(boolean running){
this.isRunning = running;
}
};

当你想暂停时,调用thread.setRunning(false),重启它,调用thread.setRunning(true)

如果不是那么频繁,你的解决方案几乎没问题,但我认为你应该添加

sampleThread = null

sampleThread.interrupt(); 之后,否则当你下次暂停它时,它会中断一个非 Activity 线程,可能会抛出异常。

关于java - 在android中重复启动和停止一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34632709/

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