문제

빠른 질문 ... J2ME 사용 (CLDC 1.1, MIDP-2.1) 사용 스레드를 사용하지 않음) 미드 렛을 잠들 수 있습니까?

public class myMidlet extends MIDlet{
    public void startApp() {
        /* Sleep for 10 seconds */

        /* The answer was: */
        try {
            Thread.sleep(time_ms);
        } catch (Exception e) {}
    }
...

나는 Java를 그다지 많이 사용하지 않으며 간단한 수면을 위해 스레드를 프로그래밍하고 싶지 않습니다.

미리 감사드립니다

답변 요약

Java 지식의 부족. 내가 Thread.Sleep ()를 사용하는 예를 통해 미드 렛 자체가 아니라 미드 렛이 스폰 한 스레드 객체에서만 사용할 수 있다고 생각하게되었습니다. 나는 잠을 자도록 미드 렛 로직을 스레드로 스풀로 묶고 싶지 않았다 ... 그러나 이제 나는 미들렛이 기본 스레드에서 실행된다는 것을 알고있다 :) 내가 언어를 사용할 것이라고 생각하지 않았기 때문에 내가 읽지 못했던 Java 책을 찾으려고

도움이 되었습니까?

해결책

나는 당신이 미들렛을 일시 정지 상태에 두는 것을 의미하는지 또는 지정된 시간 동안 실행을 중지한다는 것을 이해하지 못했습니다.

그것이 후자라면, 실제로 나는 원치 않는지, 왜 당신이 스레드를 사용하고 싶지 않은지, 이것은 큰 문제가 아닙니다. 필요한 곳에서 다음 줄을 삽입하면 다음과 같습니다.

try {
    Thread.sleep(10000);
} catch (Exception ex) {}

그게 전부입니다. 너무 복잡한 것은 없습니다.

다른 팁

정확한 답변을 모르지만 정적 메소드 스레드를 호출하는 데 문제가 무엇인지 이해하지 못합니다. . 이 프로그래밍 스레드라고 부르나요?

나는 당신의 스레드가 예외를 던질 수 있기 때문에 Malcolm의 접근 방식으로 갈 것입니다.

...] 그리고 스레드를 프로그래밍하고 싶지 않아 [...

어, J2ME를 프로그래밍하고 스레드 프로그래밍을 피하려고 노력하는 데 어려움이 있습니다. 앱이 조금 더 복잡해지면, 특히 네트워크 연결을 사용할 때 스레드를 사용해야합니다. 또한 일부 작업이 2-3 초 이상 걸리면 별도의 스레드에서 실행하는 것이 좋습니다.

BTW, 내가 잊어 버린 것. 나는 최근에 대학 과정을위한 J2ME 신청서를 작성했습니다. 거기에서 나는 "ExecutableTask"라고 부르는 것을 구성하여 편리하고 쉬운 방법으로 실을 처리 할 수있었습니다. 당신이 가고 싶다면 소스를보세요... 불행히도 Google 호스팅 솔루션의 버그로 인해 Google 저장소에서 온라인으로 찾아 볼 수 없습니다 (내 프로젝트의 일부 이름 내 원인).

사용해 볼 수 있습니다 Object.wait(), Object.wait(long timeoutValue). 메인 STARTAPP () / 시스템 스레드를 시도하고 지연 시키라고 조언하지는 않지만.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top