2015-08-21 35 views
0

有在我的牙齒成Java執行人服務下沉,我注意到它放平了我的一些要求:任務執行有特殊要求的在Java

  1. 我需要實現一個小的反應體系。所以任務可以導致一個新的任務。
  2. 這些任務可以動態調度,或者作爲事件(例如等待令牌池)或時間的反應。
  3. 如果任務死了,我需要做出相應的反應這麼一個任務可以通過不同的事件的方法組成,或至少提供一個監聽器服務(如谷歌番石榴LIB)

我不喜歡這個想法實現它自己。但它是一個事件監聽器集合,等待事件發生並立即爲此計劃任務。爲特定時間點安排作業也正在生成一個計時器事件,該事件由等待最近的計時器事件發生的等待隊列觸發,並通知框架並完成。

那麼,有沒有什麼東西提供了這個或默認的方式來使用Java執行器呢?

+0

你的問題只是「請推薦一個工具」給我。你期望什麼樣的答案? –

+0

使用標準工具或我看不到的簡化的解決方案? –

回答

0

使用java併發包,它借用了一個名爲akka的即將到來的框架的概念。這應該足以做你想做的,如果不是,那麼使用akka。我這裏有一個例子:Executing Dependent tasks in parallel in Java

編輯:是正確的在我的例子有阻塞get方法,只需使用

future.onComplete(new OnComplete<Object>()) 

要刪除任何阻擋。

+0

你那邊的例子就是我不能使用這種方法的確切原因。首先,您的示例僅適用於此示例,原因是您限制執行程序池並使用FutureTask.get()阻止當前線程[「void java.util.concurrent.locks.LockSupport.park(Object blocker) - 禁用當前線程爲了線程調度的目的,除非許可證可用。]。這是不可取的。它也不是真正可測試(大nogo),並且對內部任務失敗和重新安排任務本身的反應是不可能的 –

+0

嗨,只需使用onComplete相反,那麼沒有阻塞。 – Snickers3192

0

我爲自己找到了最終的解決方案。原來,我只需要執行一項特殊任務和一項簡單的執行任務。任務本身可以使用任何手段對事件做出反應並推遲。等待事件只是一系列任務或事件生產者,它們代表事件創建任務。就那麼簡單。

但是,爲什麼使用延遲建立計劃執行者?這確實沒有任何意義。沒有人想要使用延遲來安排任務或事件......。