活动线程数不断增加

has*_*s19 5 multithreading android

我使用executorService使用此代码一次只执行一个任务

executorService=Executors.newSingleThreadExecutor();
Run Code Online (Sandbox Code Playgroud)

Thread.activeCount()用来获取活动线程的数量,但每当我向executorService提交一个可运行的任务时,活动线程的数量会增加1.怎么可能?

我想newSingleThreadExecutor()只允许一次只执行一个任务.为什么线程数量不断增加?不应该线程数只增加一个而不是更多?

请注意,我future甚至在提交新任务之前也使用取消所有runnable的执行,并且它工作正常; 所有runnable都被打断了.但是,活动线程的数量不断增加.

编辑:这是每当我按下按钮时调用的代码(Worker只是一个实现runnable的类):

private void handle() {
    executorService=Executors.newSingleThreadExecutor();
    Worker worker=new Worker();
    future=executorService.submit(new Worker());
}
Run Code Online (Sandbox Code Playgroud)

Gab*_*han 3

每次调用它时,它都会创建一个新的执行器。每个单线程执行器都有自己的线程。如果您想在该执行器上执行多个作业,您可以调用一次 newSingleThreadedExecutor 并将所有作业提交给该执行器。您不会多次调用 newSingleThreadedExecutor

  • 这就说得通了。如果你调用 Looper.loop(),它将永远等待新消息,因此永远不会真正退出任务。这意味着您安排的任何其他任务都不会运行。 (2认同)