ExecutorService无法重用其线程

时间:2018-11-02 04:09:11

标签: android multithreading

我有以下任务:

void task()
{
  Looper.preapre();
  handler = new Handler();
  runnable = new Runnable()
  {
     if(notDone)
     {
        doSth();
        handler.postDelay(runnable,timeInterval);
     }
     else
     {
        handler.removeCallBacks(runnable);
        returnResult(); / the task is done and return some results
     }
  }
   handler.post(runnable);
   Looper.loop();
}

我将ExecutorService与单个工作线程一起使用来运行此任务,第一次运行就很好,但是第二次从未执行该任务,因为尽管我调用removeCallBacks,工作线程仍在运行第一个任务。有人知道问题出在哪里吗?预先感谢。

PS:我尝试使用Looper.quit(),但是它会杀死线程,因此执行程序无法在死线程上运行任务。

1 个答案:

答案 0 :(得分:1)

经过研究,我发现当循环程序连接到线程时,即使线程处于空闲状态,它也将始终保持线程处于活动状态,因此ExecutorService无法取回空闲线程