2013-03-05 41 views
0

everyone。java - 休息20秒後結束會話

我正在實現一種像定製基於定時器的會話。這是一個具有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)? – 2013-03-05 10:19:18

+0

通常'ScheduledExecutorService'將是更好的選擇,但@ Eng.Fouad是正確的。 – 2013-03-05 10:20:30

回答

0

要麼使用一個定時器要超時每一個線程,或:

  • 讓每個線程都有自己的超時計數器
  • 在一個單獨的線程上,定期(通過定時器)迭代線程並查找自上次定時器重置動作以來的秒數
  • stop()線程每當線程用完時就停止,否則增加秒數

不過,stop() - ping一個線程會導致各種問題。最好是定期檢查信號,並將信號設置爲「應該停止」並讓線程自行終止。

+0

嗨,我的課只有一個實例,因爲我使用的是單身人士。它不在線程上運行。 – lorraine 2013-03-05 10:37:29