runnable을 포함하는 스레드가 있습니다. 사용자가 취소하지 않으면 무한 루프가 필요합니다. 나는 이것에 대해 어떻게 생각하는지 모른다. 모든 도움은 대단히 감사하겠습니다. 건배.어떻게 스레드를 반복합니까?
4
A
답변
9
사용자가 취소하지 않으면 무한 루프가 필요합니다. 분명히
당신은 쉽게 내부 사용자의 run()
방법의 루프를 추가 할 수 있습니다
new Thread(new Runnable() {
public void run() {
// loop until the thread is interrupted
while (!Thread.currentThread().isInterrupted()) {
// do something in the loop
}
}
}).start();
당신이 방법에 대해 요구하는 경우
new Thread(new Runnable() {
public void run() {
while (true) {
// do something in the loop
}
}
}).start();
그것은 스레드 중단을 확인하는 것이 좋은 생각 다른 스레드 (예 : UI 스레드)에서 스레드 작업을 취소 할 수 있습니다. 다음과 같이 할 수 있습니다.
private final volatile running = true;
...
new Thread(new Runnable() {
public void run() {
while (running) {
// do something in the loop
}
}
}).start();
...
// later, in another thread, you can shut it down by setting running to false
running = false;
volatile boolean
을 사용해야 하나의 스레드에서 필드 변경 내용이 다른 스레드에서 볼 수 있습니다.
루프를 실행하기 만하면됩니다. 하지만 아마도 스레드가 주 스레드의 명령/작업 항목을 처리하기를 원할 것입니다. 그리고 쉴 때 자지? 말하면 그만둬? –