0

これを行うための私の選択は何ですか?

多数のスケジュールされたタスクを作成するには、複数のスレッドが必要ですか? これらすべてのスケジュールされたタスクを処理するために、1 つのスレッドのみを使用したいと考えています。

現在、私はこれを使用しています:

    // send first message, first message is right away
sendMessage();

// prepare the timer to send second message, 2nd message sends 35 seconds after 1st
final ScheduledFuture<?> future2 = ses.scheduleAtFixedRate(
    sendMessage(),
    initDelay,
    EXE_LENGTH * EXE_LENGTH,
    TimeUnit.SECONDS
);

// kill the process for future2 30 seconds after 2nd message is sent
ses.schedule(new Runnable()
{
    @Override
    public void run()
    {
        future2.cancel(true);
    }
}, initDelay, TimeUnit.SECONDS);

// prepare the timer to send the third message, 3rd message sends 35 seconds after task for 2nd message is killed
final ScheduledFuture<?> future3 = ses.scheduleAtFixedRate(
    sendMessage(),
    initDelay + 2L,
    EXE_LENGTH * EXE_LENGTH,
    TimeUnit.SECONDS
);

// kill the process for future3 30 seconds after 3rd message is sent
ses.schedule(new Runnable()
{
    @Override
    public void run()
    {
        future3.cancel(true);       
    }
}, initDelay, TimeUnit.SECONDS);

// shutdown the whole scheduler after the 3rd process is killed
ses.schedule(new Runnable() 
{
    @Override
    public void run() {
        shutdown(challengeId);
    }
}, initDelay+2L, TimeUnit.SECONDS);

私はスレッドについてあまり詳しくありませんが、これにより、いくつかのタスクを処理するために複数のスレッドが作成されると思います。

4

0 に答える 0