事件發生後,我想運行一個任務/可運行但在2秒內延遲執行。如何在Java中刪除/ postDelayed runnables?
在這2秒鐘內,如果發生同樣的事件,我想刪除上一個任務並重新發布它 - 再次延遲2秒。
一個示例場景是後臺編譯。當一個文件被保存時,我等待2秒鐘,並開始編譯類和其他,依賴類。我不想一直這麼做 - 尤其是如果有編輯器自動保存文件,比如IntelliJ IDEA。
那麼,我怎樣才能在Java中刪除/ postDelayed可運行,像Android這樣的處理程序(remove/postDelayed)?
最後,我使用了'ScheduledThreadPoolExecutor'這個解決方案的變種。我安排任務被延遲,但刪除不起作用,因爲它沒有比較正確的任務。我所做的是完全清除隊列。有點討厭但有效。 –
會不會Executors.newSingleThreadScheduledExecutor給你更像Android的處理程序的行爲?這將保證發佈到它的Runnables將按順序執行而不是並行執行。 –