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