Java ScheduledThreadPoolExecutor与一个计划任务(Runnable)保持报告回作业计数器+;1一直
当我打印s.getTaskCount()时,我得到了一个不断增加的任务计数(比如1,2,3,4,5,6,7…)。我不明白为什么Java ScheduledThreadPoolExecutor与一个计划任务(Runnable)保持报告回作业计数器+;1一直,java,multithreading,concurrency,Java,Multithreading,Concurrency,当我打印s.getTaskCount()时,我得到了一个不断增加的任务计数(比如1,2,3,4,5,6,7…)。我不明白为什么 public class MyTask implements Runnable { public void run() { System.out.println("whatever...."); } } ScheduledThreadPoolExecutor s = new ScheduledThreadPoolExecuto
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);
}
}
ScheduledThreadPoolExecutor.getTaskCount()在文档中的状态为:
返回近似总数 已计划的任务数 执行。因为任务的状态 线程可能会动态变化 在计算过程中,返回的值 只是一个近似值,但是 这一点在所有国家都不会减少 连续呼叫 因此,getTaskCount()返回池已执行的任务总数
我不确定您的目标是什么,但如果您想要当前正在执行的任务数,请尝试getActiveCount()。返回已计划执行的任务的大致总数。我正在尝试获取我计划的所有任务的活动计数,或者更确切地说,查看还有多少任务仍在执行。不,它将随着时间的推移继续增加。它是曾经进入队列的任务总数。getActiveCount()将返回当前正在执行的数字。您也可以使用getQueue()直接监视任务队列。我正在执行以下操作: