2012-09-01 54 views
0

我正在尋找一個Java調度框架,它不是定時器驅動的或任何種類的cron風格的調度器,如Quartz等。這裏有很多問題和答案可以解決計時器驅動的調度程序,但是這樣的調度程序不能解決我的問題。尋找基於非Cron的Java調度器

我遇到的問題是,我有幾個線程,每個線程從分配給它的阻塞隊列中接收消息。當阻塞隊列爲空時,從中讀取的線程被阻塞,並且不能分配給其他線程。這樣我的系統可能會遇到一些飢餓問題。由於這種JDK5線程池不適合,因爲它們只能將未被阻塞的空閒線程分配給需要提供服務的另一個隊列。

我在互聯網上發現了hawt dispatch,這是我所需要的,但它的高級功能(如期貨)會讓我更加舒適,只有在使用Scala API時纔可用。有人知道一些類似於hawt dispatch的Java框架嗎?任何暗示很多appreaciated。

問候,奧利弗

回答

0

說實話,我不知道任何框架,做你所描述的,但我寧願改變線程執行不上的隊列阻塞。

即使隊列實施BlockingQueue interface,仍然可以使用Queue#peek() method非阻塞方式檢查。

+0

是的,正好。那就是我的意思 :-)。當Queue.peek()返回null時,調度程序將該隊列添加到空隊列列表中,並將一個非空隊列分配給該線程,否則將保持阻塞狀態。當一個消息/作業/任務被添加到一個空隊列時,它將被移動到非空隊列列表中,並由下一個變爲空閒的線程(FIFO,LRU,whatver)提供服務。我現在正在尋找的是一個這樣的調度框架,爲我做這個工作。 – OlliP