2017-04-26 34 views
2

如何使用Java併發API獲取對計劃執行的任務的引用?獲取對計劃任務的引用

我可以做這樣的事情,並保持參考myRunnable:

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor(); 
SimpleRunnable myRunnable = new SimpleRunnable(); 
exec.scheduleAtFixedRate(myRunnable, 0, 2, TimeUnit.SECONDS); 

但有使用執行人服務或ScheduledFuture獲得參考的方法嗎?

This question顯示Future對象的集合,並討論它們保留對任務的引用,但我沒有看到公開的API方法公開它。

回答

0

未來引用表示異步任務的計算結果,而任務本身基本上是您傳遞給scheduleAtFixedRate方法(以下示例中的'myRunnable')的可運行引用。

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor(); 
SimpleRunnable myRunnable = new SimpleRunnable(); 
ScheduledFuture<?> future = exec.scheduleAtFixedRate(myRunnable, 0, 2, 
TimeUnit.SECONDS); 

我不認爲你有辦法從執行程序本身了Runnable。 請詳細說明你願意做什麼,我會盡力協助你。

+0

是的,我可以掛在ScheduledFuture對象的引用上,但我仍然沒有看到任何獲取任務引用的方法。 – sjgp

+0

我不認爲你有辦法從執行程序本身檢索Runnable。請詳細說明你願意做什麼,我會盡力協助你。 –

+0

我正在探索設計選項,要求定期運行任務以執行一些工作,並收集信息。第二個獨立流程需要訪問該信息。訪問不需要通過Executor或Future API,我可以設計另一種解決方案,因爲引用任務的方式似乎不是一種選擇。謝謝你的想法! – sjgp