目前我正在使用定時器每間隔時間執行一些功能。但是,稍後當我想要更改執行該功能的時間間隔時,我無法取消上一個時間表。這是如何解決的?謝謝如何取消定時器的現有時間表
回答
隨着timer.cancel()
方法,你可以取消定時器和所有計劃任務。 (見API documentation),或者您可以撥打您的TimerTask timertask.cancel()
取消方法(見API documentation)
如果要更改計劃的時間,你應該取消的TimerTask並添加新的TimerTask。
TimerTask#取消,然後Timer#purge()不起作用。它仍然運行。 – JohnyTex
您可以使用ScheduledThreadPoolExecutor而不是Timer
進行調查。
用法非常簡單。您創建一個執行的一個實例:
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
然後當你想添加一個任務,您撥打:
executor.scheduleAtFixedRate(myRunnable, delay, interval, unit);
哪裏myRunnable
是你的任務(實現Runnable
- 接口),delay
是第一次執行任務之前需要多長時間,interval
是第一次執行後執行任務之間的時間。 delay
和interval
基於unit
參數進行測量,該參數可以是TimeUnit。*(其中*是SECONDS,MINUTES,MILLISECONDS等)。
然後停止調用執行:
executor.shutdownNow();
然後你就可以用不同的間隔重新提交任務。
注意:您可能需要在重新提交任務之前創建執行程序的新實例,但我不太確定原因。
它與定時器有什麼不同? – njzk2
這個鏈接告訴你一些差異:http://www.dremsus.com/index.php/2011/03/why-scheduledthreadpoolexecutor-for-smartfoxserver-2x/另外這個問題在Stackoverflow上分歧:http: //stackoverflow.com/questions/409932/java-timer-vs-executorservice – kaspermoerch
有無論如何,我不需要關閉執行器或關閉計時器?我不想創建執行程序或計時器對象的新實例... – user301
- 1. 如何在特定時間取消PendingIntent?
- 2. x間隔後取消定時器
- 3. 如何取消定時器並更新同一個定時器?
- 4. 已調整。定時器取消後給「java.lang.IllegalStateException:定時器取消。」
- 5. Linux,C,如何取消定時器?
- 6. 定時器已經取消
- 7. 如何取消具有現有值的django日期時間字段?
- 8. 定時器問題呈現時間
- 9. 如何在主頁按鈕被按下時取消定時器?
- 10. 如何在Java中獲取定時器的剩餘時間?
- 11. Java如何獲取定時器停止的時間?
- 12. 我如何取消時間計數?
- 13. 時間表現
- 14. Allegro定時器如何計算時間?
- 15. 如何更改android定時器時間?
- 16. 如何確定現有的表空間
- 17. 如何設置現有NSDate的時間?
- 18. 取消ngrx效果中的定時器
- 19. 取消定時器後的android視圖
- 20. 設定的時間間隔()沒有表現出一個
- 21. 如何使用Ecto的時間戳將時間戳添加到現有表?
- 22. 如何從Smack 4.1中的實時消息獲取服務器時間戳
- 23. 定時器時間表:java.lang.IllegalArgumentException異常
- 24. 如何在指定時間後取消UrlFetchApp.fetch?
- 25. 如何在特定時間後取消iOS本地通知?
- 26. 如何取消定時器的多個實例?
- 27. 如何從android中的時間選擇器獲取時間?
- 28. 如何在計時器取消後重新啓動計時器?
- 29. 如何防止在取消已取消的定時器時獲得豁免(因爲有些時候它已被取消/完成)?
- 30. 如何取消Android應用程序中的所有計時器?
你是什麼意思「我不能取消以前的時間表」?你不知道該怎麼做,還是它不適合你的建築? – njzk2
我想取消上一個時間表並以不同的時間間隔開始新的時間表。但是,對於定時器,似乎沒有辦法做到這一點..令人沮喪的 – user301
你必須實際取消定時器並重新創建一個 – njzk2