私は与えられた遅延の後に連続して実行したいワーカースレッドをたくさん持っています。私は、次の動作を実現したいと思います:遅延が発生した後にタスクを順番に実行するようにスケジュールする
DELAY - >ワーカー1 - > DELAY - >ワーカー2 - DELAY - >ワーカー3 - > ...
私はこの解決策を考え出しました
private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
があります:ようexecutorService
が作成された
long delay = 5;
for(String value : values) {
WorkerThread workerThread = new WorkerThread(value);
executorService.schedule(workerThread, delay, TimeUnit.SECONDS);
delay = delay + 5;
}
JavaでExecutorService
でこれを実現する他の方法はありますか?
あなたはすべての 'delay'を実行し、単一のworkerthreadを持つことができます:この使用を可能に
とシンプルな遅れ実装
:そして、このクラスを使用して、労働者を飾りますプロセスの待ち行列から 'value'を取り出します。 – Kayaman
あなたの現在のソリューションはスケジューリングの開始に関連して各作業者の開始を遅らせますが、問題のレイアウトでは1人の作業者が終了してから次の作業を開始するまでに一定の遅延が生じます。あなたは本当に欲しいものを明確にすることができますか? – bowmore
@bowmore私の目標は状態マシンをシミュレートすることです。だから、私は労働者と次の仕事の間に一定の遅れがあるだろう。 –