3

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 を再実装したくありません。

ありがとう!

4

0 に答える 0