Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ThreadPoolExecutor在关闭后抛出RejectedExecutionException_Android_Multithreading_Threadpoolexecutor - Fatal编程技术网

Android ThreadPoolExecutor在关闭后抛出RejectedExecutionException

Android ThreadPoolExecutor在关闭后抛出RejectedExecutionException,android,multithreading,threadpoolexecutor,Android,Multithreading,Threadpoolexecutor,我有两个按钮开始下载和停止下载。我使用ThreadPoolExecutor进行多次下载。单击停止按钮时,我关闭了ThreadPoolExecutor。单击开始按钮后,我将在ThreadPoolExecutor上再次开始执行。我得到了拒绝执行异常。 我想知道如何重新执行已经关闭的ThreadPoolExecutor 编辑: 错误堆栈 11-18 10:41:52.929: E/AndroidRuntime(27351): FATAL EXCEPTION: main 11-18 10:41:52.9

我有两个按钮开始下载和停止下载。我使用
ThreadPoolExecutor
进行多次下载。单击停止按钮时,我关闭了
ThreadPoolExecutor
。单击开始按钮后,我将在
ThreadPoolExecutor
上再次开始执行。我得到了
拒绝执行异常
。 我想知道如何重新执行已经关闭的
ThreadPoolExecutor

编辑: 错误堆栈

11-18 10:41:52.929: E/AndroidRuntime(27351): FATAL EXCEPTION: main
11-18 10:41:52.929: E/AndroidRuntime(27351): java.util.concurrent.RejectedExecutionException: Task com.task.SyncTask@42614978 rejected from java.util.concurrent.ThreadPoolExecutor@414ce138[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 181]
11-18 10:41:52.929: E/AndroidRuntime(27351):    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1979)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:786)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1307)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at com.MainActivity$2.handleMessage(MainActivity.java:394)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at android.os.Looper.loop(Looper.java:213)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at android.app.ActivityThread.main(ActivityThread.java:5092)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at java.lang.reflect.Method.invokeNative(Native Method)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at java.lang.reflect.Method.invoke(Method.java:511)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
11-18 10:41:52.929: E/AndroidRuntime(27351):    at dalvik.system.NativeStart.main(Native Method)
谢谢。

根据,在呼叫关机后,“将不接受新任务”

您不需要显式地关闭执行器(一旦执行器中的所有线程都完成,它将自行处理)


您收到的RejectedExecutionException中是否有消息?

如果单击“停止”按钮,我需要停止所有队列线程。可以调用线程上的中断()。。。或者做你现在正在做的事情,当你想启动新的线程池执行器时,创建一个新的线程池执行器。是的,我认为创建一个新的更好。