ScheduledExecutorService在主线程中运行

时间:2018-07-17 08:32:15

标签: java android multithreading

我有2个ScheduledExecutorService,如下所示:

private ScheduledExecutorService writeToLog = Executors.newSingleThreadScheduledExecutor();

writeToLog.scheduleAtFixedRate(
                new Runnable() {
                    @Override
                    public void run() {
                        writeToLog();
                    }
                },
                0, 1, TimeUnit.SECONDS
        );

但是在运行此执行程序后,当我检查正在运行的线程数时:

 int nbRunning = 0;
        for (Thread t : Thread.getAllStackTraces().keySet()) {
            if (t.getState()==Thread.State.RUNNABLE) nbRunning++;
        }

我仍然有7个线程,在此方法之前和之后,这个数目相同的正在运行的线程。这是怎么了我应该有9个线程

1 个答案:

答案 0 :(得分:1)

导致该线程调用writeToLog的原因未处于可运行状态。执行写日志后,调度的线程将进入Timed_WAITING状态。但是您已经检查了可运行状态。这就是您没有获得计数增量的原因。