4

JavaScriptのようなものを探していますsetTimeoutRunnable、次の制限があります。

  • タイムアウトごとに個別の専用スレッドは必要ありません。
  • すでに開発され、考え抜かれています。
  • たぶん、追加機能も含まれています。(タイムアウトをキャンセルしますか?、何かを待ちますか?、非同期I / O?)
  • GUIライブラリは必要ありません。(Java FX / Swing / AWTにはすべてイベントループが組み込まれています)

何か提案はありますか?

編集:私は私が探しているものを見つけました。プラスは、ノンブロッキングまたは非同期I/Oのいずれかに関連するものも含むライブラリがある場合です。

4

5 に答える 5

3

あなたはおそらくScheduledThreadPoolExecutorを探しています:

  • 使用するスレッドの数を決定します
  • 標準のJDKクラス
  • キャンセル可能なタスク
  • GUIとは関係ありません

スケジュールされたランナブルとイベントループの関係はよくわかりませんが、このクラスで探しているものが見つかるかもしれません。

于 2011-12-30T19:06:34.090 に答える
2

java.util.Timerを使用できます

http://docs.oracle.com/javase/6/docs/api/java/util/Timer.html http://docs.oracle.com/javase/6/docs/api/java/util/TimerTask.html

タスクの実行は1回のみまたは定期的に設定できます。個々のTimerTaskまたはすべてのタスクを停止/キャンセルすることもできます。

于 2011-12-30T19:14:32.413 に答える
1

Javaで単純なnode.jsスタイルのイベントループを探している場合は、ThreadPoolExecutorが良いスタートです。

ThreadPoolExecutorのjavadocに記載されているExecutorsファクトリ、特にExecutors.newSingleThreadExecutor ()を見てください。これにより、タスクを送信できる単一のバックグラウンドスレッド(Nodeイベントループのように:この質問の回答を参照)が提供されます。

非同期IOの場合、ブロッキングアクティビティを処理するタスクは、スレッド(またはエグゼキューター)を分割し、Futureを使用して結果をイベントループに送信する必要があります。

于 2012-10-16T10:05:49.273 に答える
1

Vert.xはあなたが必要としているものだと思います。それはイベント駆動型で、ノンブロッキングです。

于 2016-01-01T16:31:20.443 に答える
0

ThreadPoolExecutorのawaitTerminationAPIを使用することを考えましたか

tpe.awaitTermination(50, TimeUnit.SECONDS);

あなたに役立つかもしれません。

于 2011-12-30T19:04:28.223 に答える