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