在 Google App Engine 上使用 ExecutorService 时出现异常。
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThread") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:375)
我的代码是
ExecutorService service = Executors.newFixedThreadPool(25,com.google.appengine.api.ThreadManager.currentRequestThreadFactory());
List<Future<JSONObject>> results = service.invokeAll(jobs,45,TimeUnit.Seconds);
看起来 Thread.interrupt 似乎导致安全管理器触发。文档有点不清楚,有些地方说中断是可以的,其他地方说它只在当前线程上可用。
我尝试复制相同的东西,产生一个线程然后中断它,而不使用 ExecutorService 并且它工作正常。
如果这是我可以调整的安全问题(不太可能)或错误,有什么想法吗?我宁愿不重新实现 ExecutorService。
谢谢!