2012-07-25 3 views
0
class BeeperControl { 
    private final static ScheduledExecutorService scheduler = 
            Executors.newScheduledThreadPool(1); 

    public static void main(String[] args){ 
     beepForAnHour(); 
    } 

    public static void beepForAnHour() { 
     final Runnable beeper = new Runnable() { 
      public void run() { 
       System.out.println(“beep”); 
      } 
     }; 
     final ScheduledFuture beeperHandle = 
      scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); 

     scheduler.schedule(new Runnable() { 
      public void run() { 
       beeperHandle.cancel(true); 
      } 
     }, 60 * 60, SECONDS); 
    } 
} 

이 코드는 10 초마다 한 번 삑 소리를냅니다. 영원히 10 분마다 어떻게 울리지? (1 시간이 아닌) 10 분마다 계속 울려 야합니다.영원히 반복 할 코드 변경

+1

'while (true) {}'로 감싸시겠습니까? – 11684

+0

1 단계 : 코드를 읽기 쉽게 포맷하십시오. –

+0

더 나은 .. 스케줄러 또는 수면 ????????? – user1545477

답변

3

취소 작업을 명시 적으로 예약합니다. 취소하지 않으려면 취소 작업을 예약하지 마십시오.

+0

감사합니다 .................... – user1545477

+0

더 좋습니다 .. 스케줄러 또는 수면 ????????? – user1545477

+0

스케줄러가 더 좋습니다. –

1

취소 작업을 수행하는 두 번째 일정을 삭제하십시오.

+0

omg 감사합니다 :), ..... – user1545477

+0

당신을 환영합니다. – MahdeTo

+0

더 나은 .. 스케줄러 또는 수면 ????????? – user1545477

0

내가 제안 :

public void run() { 
    while(true) { 
     System.out.println(“beep”); 
     Thread.sleep(10000); 
    } 
} 

+의;

  • 간단한

-'s 중단되고 있다면 당신은 추적 할 수 있습니다 를 - 중지 할 경우에는 예외 : InterruptedException

을 잡으려고 있습니다

  • catch 문에서 중지/일시 중지하고 myThread.interrupt();이라고 말하면 코드를 멈추고, 다시 시작하는 것이 조금 어렵습니다. 가장 좋은 방법은 새 스레드를 만드는 것입니다 (정확히 똑같습니다). 여기에 정보 : How to start/stop/restart a thread in Java?
  • while 루프에 public 문을 넣고 isRunning을 체크하고 거짓이면 false로 다시 말하면 continue; 다시 확인하고 다시 참이 될 때까지 경고음을 'true- 블록'.
+0

@Nandkumar 하하, 내가 편집을 클릭하면 편집 페이지에서 편집을 보여주었습니다. 정확히 내가 할 일이었습니다! – 11684

+0

나는 OP가 ScheduledExecutorService를 사용하려고한다고 생각하는데, 나는 이것이 그의 질문에 대한 대답이 아님을 두려워한다. – fvu

+0

아마 그 질문에 언급되지 않았다. – 11684