Runnable 선언
runnable = new Runnable() {
@Override
public void run() {
while (true) {
if (started) {
handler.post(new Runnable() {
@Override
public void run() {
//TODO
}
});
try {
Thread.sleep(1000); //10초
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
};
스레드 시작
thread = new Thread(runnable);
started= true;
thread.start();
스레드 일시정지
if (thread.isAlive()) {
started = false;
}
스레드 중지
started = false;
thread.interrupt();
이런식으로 스레드를 돌리다가 잠시 일시정지 할때는
if 안의 플래그인 started=false로 하고
재개할때 started=true로 바꿉니다
그리고 중지하면 thread.interrupt() 와 started=false;로 바꿉니다
문제는 스레드를 다시 실행하면 2개의 스레드가 동시에 돌아갑니다(기존의 스레드가 제거가 안되는 상황)
요기에서 while 안의 true때문에 문제일까요?
구조의 문제일까요? 더 좋은 스레드 돌리는 방법이 있나요?