내 Java (Android) 프로그램에서 매 2 초마다 10 분 이상 연속해서 난수를 생성하고 싶습니다. 그러나 나는 전체 프로그램이 아니라 오직 한 가지 방법으로 코드의 실행을 일시 정지/지연시키고 싶다.메소드 Java에서 코드 실행 지연
I는 다음과 같이 스레드를 사용하여 시도 -
boolean stop = false;
int random_number = 0;
while(true){
if(stop){ //if stop becomes true, then
return; //terminate the method
}
random_number = Math.random(); //generate random number
//which is used bu some other
//part of code
try {
Thread.sleep(2000); //delay the code for 2 secs
} catch(InterruptedException ex) { //and handle the exceptions
Thread.currentThread().interrupt();
}
}
그러나, 이것은 단지 방법 내부 코드의 실행을 중지하고 내 전체 화면이 비어있게 대신 전체 프로그램의 실행을 중지
Thread.sleep
대로 작동하지 않습니다.
또한 Handler
을 사용해 보았지만 내 방법에서 코드 실행을 멈추지 않고 대신 스택만으로 작동하지 않았습니다.
while(true){
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
System.out.println("After 2 secs"); //this gets printed
//later
}
}, 2000);
System.out.println("Before 2 secs"); //this gets printed first
}
그래서 코드가 루프 동안 사용에 동등한 만드는 스택까지하고 매우 느린 만들기 -
이 더 나은의 작업을 시연 할 예정이다.
또한 Android 용 앱을 개발 중이므로 Java SE 6에서 실행 중이므로 scheduleAtFixedRate
을 사용할 수 없습니다. 내가 이것을 성취 할 수있는 다른 방법이 있습니까?
고맙습니다.
왜 스레드 대신 타이머를 구현하지 않습니까? – Stultuske
또한,'Thread.sleep (n)'을 사용하고 싶다면 새로운 Thread에서 메소드를 실행해야한다. UI를 멈추게 만든 UI 쓰레드에서 실행했을 것이다. Timer는 @Stultuske가 제안한대로 좋은 생각입니다. – kamituel
확인. 나 해보자. 고마워. – Confuse