2012-05-26 54 views
-1

我對使用Java SchedulerThreadPoolExecutor頗爲陌生。我想問一下,如果有實施該方案相匹配的調度方式:執行一個阻塞的調度程序,直到完成所有任務,然後再執行新任務

  1. 在時間t,調度將在未加工和加工他們的所有任務。

  2. 在時間t + 1,有新的任務來臨,但調度程序無法執行它們,因爲時間t的所有任務都沒有處理完畢。即使時間t的某些任務已經完成處理,調度程序也不能從時間t + 1開始接受新的任務,直到所有任務完成處理。如果是這種情況,調度程序將在時間t + 1阻止任務。直到所有任務t + 1都完全處理完畢,那麼調度程序將在t + 1時接受新的任務。

+0

這並不完全清楚你在第2點說的是什麼。我建議你再讀一遍,看看它爲什麼很奇怪,然後改述自己。 – ArjunShankar

+1

此外,您使用像't'和't + 1'這樣的術語。這聽起來像你看時間相對較大,但離散塊(如時鐘滴答)。 't + 1'中的'1'對你意味着什麼? – ArjunShankar

回答

0

看來你想定義任務處理週期,其中沒有任務將跨過週期邊界。兩個問題/提示:

+0

我打算使用類似定時器的功能。我在想,如果我會在特定的時間開始調度程序,比如說凌晨3點,那麼對於每個時間間隔,它將開始運行任務,比如說1分鐘。我不確定這是否可行。我打算使用配置文件,以便我可以配置時間以及運行調度程序的時間間隔。 我沒有考慮使用invokeAll。它有什麼幫助? – ktlim

+0

@ktlim:'invokeAll()'將啓動所有提供的任務,然後等待它們完成。它通過阻止提交者線程來允許一定程度的確定性,直到完成所有任務... – thkala

+0

@ktlim:然而,在我看來,你需要的是比簡單的作業調度器更復雜。如果你描述了你的實際問題,而不是你希望你的調度程序課程做什麼,那可能是最好的。例如,如果下一個時間間隔到達並且某些任務尚未完成,會發生什麼情況? – thkala

相關問題