我的問題是:我有一個類接受目錄中的文件。每當第一個對象到達時,它啓動一些定時器對目錄中的所有文件執行壓縮,這些文件在接下來的60秒內到達。Java:計時器或ScheduleExecutorService用於計算繁忙窗口中的點擊次數?
這就提出了兩個要求:
1)我需要能夠檢查是否在新文件到達「倒計時」已經在運行。我不希望file2在file1之後15秒到達,然後它們在45秒後被壓縮在一起,只有在第一次完成(到一個空目錄)15秒後觸發第二個計劃任務。
2)智能配料/非恆定輪詢。例如,如果file1在時間= 0到達,file2在時間= 59s到達,它們將被壓縮在一起。但是,如果file3在時間= 89s之前沒有到達,並且file4在時間= 129s到達,我想確保下一個「壓縮」操作不在定時器= 120s發生,而是在定時器= 149s(60秒之後file3抵達)。
換句話說:只有一個定時器/倒計時應該運行。如果它是自壓縮以來的第一個文件,它應該觸發一個新的文件,否則它應該被忽略。
我正在研究java.util.Timer和Java.util.concurent.ScheduledExecutorService作爲解決方案,但都似乎建立了多個進程,我試圖避免。
有沒有更好的解決方案呢?
您如何收到文件已經「抵達」的通知? 「到達」意味着什麼 - 這是否意味着該文件已被完全編寫並由任何應用程序創建它關閉? – 2012-02-15 14:55:03
我的課程是通過一個文件,然後將其移動到適當的目錄並在壓縮之前檢查定時器/倒計時。 – Bing 2012-02-15 15:04:04