ScheduledThreadPoolExecutor с одним запланированным заданием (Runnable) постоянно сообщает счетчик заданий + 1 - PullRequest
1 голос
/ 20 сентября 2010

Я получаю постоянно увеличивающееся (например, 1,2,3,4,5,6,7 ...) количество задач при печати s.getTaskCount (). Я не понимаю почему.

public class MyTask implements Runnable
{
    public void run()
    {
       System.out.println("whatever....");
    }
 }


ScheduledThreadPoolExecutor s = new ScheduledThreadPoolExecutor(3);
s.scheduleAtFixedRate(new MyTask(), 0, 10, TimeUnit.SECONDS);


while(1>0)
{
    try
    {
        System.out.println("TASK COUNT: "+s.getTaskCount());
        Thread.sleep(60000);
    }
    catch(InterruptedException e)
    {
        System.out.println(e);
    }
}

1 Ответ

3 голосов
/ 20 сентября 2010

ScheduledThreadPoolExecutor.getTaskCount () в документации гласит:

Возвращает приблизительное общее количество задач, которые были запланированы на исполнение . Потому что состояния задач и потоки могут меняться динамически во время вычисления возвращаемое значение это только приближение, , но один это никогда не уменьшается через последовательные звонки

Итак, getTaskCount () возвращает общее количество задач, которые были выполнены пулом.

Я не уверен, какова ваша цель, но если вы хотите узнать количество выполняемых задач, попробуйте getActiveCount ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...