2011-01-14 50 views
1

我有一個雖然問題:)Shedule任務問題

比方說,你得到一些數據是在未來的某個點。你會得到A說我的任務是在1小時內完成的,其他的說他的任務在1.5小時內完成。信息收集在您的服務器上。在哪種編程語言,甚至如何解決?所以任務a將在1小時內執行,任務B在1.5小時內執行。我讀了一些關於java調度器的東西,但我還不確定這是否正確。

你的想法是什麼?

乾杯

回答

1

cron是安裝在大多數UNIX Web服務器 - 您可以使用它來分配任務後執行。

+0

你可以通過任何編程語言來定義它們嗎? – gabac 2011-01-14 19:50:05

1

如果您正在尋找編程訪問,那麼看看Quartz - 一個java調度器。他們也有一個很好的教程resource

1

如果這是一個長時間運行的過程,那麼您可以在java中使用ScheduledExecutorService來實現此目的。顯然,如果你的程序退出,那麼任務將會丟失。

cron或石英也可以用作更持久的調度程序。每個人都有自己的皺紋。

1

如果出於某種原因,您決定自己實施這樣一個系統,這裏是這個想法。

  • 有一個列表,你保留你的任務,按照時間排序。
  • 創建一個大部分時間睡眠的守護進程,並喚醒每分鐘,甚至不定期地使用sleep()。當守護進程喚醒時,它會從隊列中獲取任務;如果任務已到期,它將在單獨的進程(或線程)中運行此任務,並將其從隊列中移除。開始了所有應有的任務後,它重新睡眠。
  • 設計一個接口將新任務添加到隊列中。