Raymond Hettinger發佈了snippet,他使用標準Python庫中提供的調度模塊來調用具有特定速率(每秒N次)的函數。我想知道Java中是否有相同的庫。Python sched模塊是否有Java等價物?
3
A
回答
4
看看java.util.Timer。
你可以找到使用的例子here
你也可以考慮石英,這是更爲強大,可以在組合 與Spring 這裏使用是example
這裏是我相當於用你提到的代碼片段的java.util.Timer
package perso.tests.timer;
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample extends TimerTask{
Timer timer;
int executionsPerSecond;
public TimerExample(int executionsPerSecond){
this.executionsPerSecond = executionsPerSecond;
timer = new Timer();
long period = 1000/executionsPerSecond;
timer.schedule(this, 200, period);
}
public void functionToRepeat(){
System.out.println(executionsPerSecond);
}
public void run() {
functionToRepeat();
}
public static void main(String args[]) {
System.out.println("About to schedule task.");
new TimerExample(3);
new TimerExample(6);
new TimerExample(9);
System.out.println("Tasks scheduled.");
}
}
5
看看http://quartz-scheduler.org/
石英是可以與集成,或者伴隨虛擬的任何Java EE和Java SE應用程序一個全功能的,開源的作業調度服務 - 從最小的立場 - 最大的電子商務系統的應用程序。
0
你可以找到示例代碼here
2
一種輕質的選擇是ScheduledExecutorService。
的大致相當於Java代碼蟒蛇片段是:
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public ScheduledFuture<?> newTimedCall(int callsPerSecond,
Callback<T> callback, T argument) {
int period = (1000/callsPerSecond);
return
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
callback.on(argument);
}
}, 0, period, TimeUnit.MILLISECONDS);
}
練習留給讀者:
- 定義回調接口
- 決定如何處理返回的未來做
- 切記關閉執行器
+0
+1可能是最好的解決方案。有趣的是,Java代碼片段的時間並不比Python相當長。 – helpermethod
+0
謝謝!我狡猾地省略了一些樣板文件:) –
1
java.util.Timer
怎麼樣?請參閱this related answer。
相關問題
- 1. Perl模塊Term :: VT102是否有Python等價物?
- 2. Python模塊中是否有C的main()等價物?
- 3. 在Python中是否有sessionInfo()等價物?
- 4. Filehelpers,Super CSV:是否有Python等價物?
- 5. 是否有Python的RedBeanPHP等價物?
- 6. 是否有Python的Term :: ANSIScreen等價物?
- 7. 在Python中是否有Rake等價物?
- 8. 是否有「python -i」的ruby等價物?
- 9. R的h2o.stack是否有python等價物?
- 10. 是否有.Net System.Data的Java等價物?
- 11. excel vlookup是否有Java的等價物?
- 12. 在Java中是否有TweenMax等價物
- 13. 在java中是否有array_intersect()等價物?
- 14. 是否有IConvertible/System.Convert的Java等價物?
- 15. 是否有Ruby超時模塊的Groovy等價物?
- 16. 是否有Python的all()的Java等價物?
- 17. Python是否具有拋出新Exception的Java等價物(「text here」)
- 18. 是否有Python的defaultdict的Java等價物?
- 19. 是否有Python的map函數的Java等價物?
- 20. tf_utils包是否有非GPU等價物?
- 21. 是否有一個模塊等價於node.js的Python的argparse?
- 22. 是否有Android的Application :: onDestroy()等價物?
- 23. 是否有.gemrc.local或等價物?
- 24. 是否有jQuery.offset的Elm等價物?
- 25. 管道是否有'liftIO`等價物?
- 26. 是否有ToolStripButton的WPF等價物?
- 27. SecCertificateAddToKeychain是否有openssl等價物?
- 28. TabBarIOS - 是否有viewDidAppear或viewWillAppear等價物?
- 29. 在Doxygen中是否有@inheritDoc等價物?
- 30. JavaScript的Function.prototype.bind是否有Ruby等價物?
Timer類和Quartz庫都提供類似cron的界面,在特定時間安排作業或每N個時間單元進行一次。我需要的是一個調度程序,它調度任務以達到特定的速率,例如,每個時間單位調用N個函數(方法)。就像在我發佈@Tichodroma – dkart
@ dkart的片段中一樣,正如您在我的答案中所看到的,創建具有您期望的行爲的應用程序非常容易...除非我錯過了某件東西 –
thanx很多@Champagne我認爲這是我需要的! – dkart