1

JavaのScheduled Thread Pool Executorで次のことが可能かどうか疑問に思っています。STPE で、遅延を固定して複数の Runnable をスケジュールし、それぞれの Runnable をList<MyObject>. 私が書いた次のコード (以下) は、これを問題なく実行しているようです。しかし、これらのすべての Runnables をまったく同時に実行したいと考えています。これは可能ですか、どうすればこれを行うことができますか? そうでない場合、必要なことを達成できる別の方法はありますか? また、1 秒ごとにスレッドを実行する必要があります。

private List<MyObject> myObjects...


int corePoolSize = 1;
long initialDelay = 1L;//1 second
long delay = 1L;//1 second
ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(corePoolSize);

for (int i = 0; i < myObjects.size(); i++) {

    stpe.scheduleWithFixedDelay(new Runnable() {
        @Override
        public void run() {

            //DO SOMETHING

        }
    }, initialDelay, delay, TimeUnit.SECONDS);
}
4

1 に答える 1

0

それらをまったく同時に実行する方法は技術的にありませんが、ほぼ同時に実行することはできます。

すでに提示したオプションに加えて、最初にスレッドを特定のバリアで停止させ、メインスレッドがそのバリ​​アを開くと作業を開始することができます。Java は、この目的のために CyclicBarrier (1 回限りの使用) または Phaser (複数/柔軟な使用) を提供します。

于 2013-10-15T19:59:06.873 に答える