Class A
{
long x;
method1()
{
x = current time in millisecs;
}
task()//want to run this after (x+30) time
}
我需要在(x + 30)之後運行task()。 x可能會有所不同。如果調用method1,則任務計劃在當前時間之後30之後運行,但在30個時間週期內如果再次調用method1,則我想取消先前的任務調用,並且希望在當前時間30秒後安排新的調用任務時間。我應該如何創建一個調度程序或這種類型的任務?如何在不同時間執行任務
通過scheduledthreadpoolexecutor API,但未找到此類型的調度程序。
這是做這種事的唯一方法,就像每隔一秒檢查一次?如果大約每秒都有線程切換,那麼這不會成爲開銷 – vjk
CPU可以每秒切換10000次。檢查每一秒都不是那麼多。您可以創建一個Future,每次調用method1()時都會取消它。這存在開銷與調用method1()次數成正比的問題。參見serg10的例子。通過投票,成本是固定的,如果它確定,當你開始這樣做時,你知道它永遠不會變得更糟。 ;) –