假設我有一個任務是從java.util.concurrent.BlockingQueue中提取元素並處理它們。ScheduledExecutorService具有可變延遲
public void scheduleTask(int delay, TimeUnit timeUnit)
{
scheduledExecutorService.scheduleWithFixedDelay(new Task(queue), 0, delay, timeUnit);
}
如果可以動態更改頻率,我該如何安排/重新安排任務?
- 的想法是把數據更新流和批量它們傳播到GUI
- 用戶應該能夠改變更新頻率
我不清楚你爲什麼使用阻塞隊列。 如果你的隊列是空的。我假設你的計劃任務將被阻止。你的意圖是?這可能會混淆任務調度程序的時間。 – 2009-10-05 10:07:18
我選擇了ArrayBlockingQueue實現,因爲它必須是線程安全的,尊重FIFO排序並且有界。即使任務阻塞,它應該不會混淆任務調度嗎? – parkr 2009-10-05 10:15:00
你在使用BlockingQueue實現方面是正確的(事實上ScheduledThreadPoolExecutor在內部使用了一個)。但是,爲什麼使用計時器將更新傳播到GUI?爲什麼不實時做?是否有更新?你關心Swing線程旋轉嗎? – Adamski 2009-10-05 10:43:29