2013-03-05 2 views
0

모두.20 초 동안 비활성 후 java - end 세션

저는 맞춤 타이머 기반 세션을 구현하고 있습니다. 이것은 start(), pause(), resume() 및 stop()이있는 싱글 톤 클래스입니다. 내가 성취하고자하는 것은 세션 타임 아웃을 갖는 것입니다. 예를 들어 pause()가 호출되고 20 초 후에 resume()이 호출되지 않으면 해당 세션을 종료하기 위해 stop()을 호출하려고합니다.

아이디어를 구현하는 방법은 무엇입니까?

감사합니다.

편집 :

별로 타이머, 그것의 더 이런 스톱워치 타이머와 같은 :

public class MyTimer{ 
    private long startTime; 
    private long endTime; 

    public MyTimer getInstance(){//singleton} 

    public void start(){//} 
    public void stop(){//} 
    public void resume(){//} 
    public void pause(){//} 
} 

싱글

+4

['Timer'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html)를 사용 하시겠습니까? –

+0

보통'ScheduledExecutorService'가 더 나은 옵션이 될 것이지만 @ Eng.Fouad가 옳습니다. –

답변

0

어느 쪽이든 당신은 시간이 초과 할 모든 스레드 타이머를 사용, 또는 :

  • 모든 스레드마다 자체 제한 시간 카운터가 있습니다.
  • 별도의 스레드에서 정기적으로 (타이머를 통해) 스레드를 반복하고 마지막 타이머 재설정 작업 이후의 시간 (초)을 찾습니다.
  • 스레드의 시간이 다 떨어지면 stop 초 수

여전히 stop() - 스레드를 ping하면 모든 종류의 문제가 발생할 수 있습니다. 신호를 규칙적으로 검사하고 신호를 "중지되어야 함"으로 설정하고 스레드가 종료되도록하는 것이 더 좋습니다.

+0

안녕하세요, 싱글 톤을 사용하고 있으므로 내 수업의 인스턴스가 하나뿐입니다. 그리고 스레드에서 실행되지 않습니다. – lorraine

관련 문제