活动线程数不断增加

时间:2016-08-08 10:04:04

标签: android multithreading

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

executorService=Executors.newSingleThreadExecutor();

我正在使用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());
}

1 个答案:

答案 0 :(得分:2)

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