AccessControlException не всегда генерируется в потоках из общего пула Java.JAVA

Программисты JAVA общаются здесь
Anonymous
AccessControlException не всегда генерируется в потоках из общего пула Java.

Сообщение Anonymous »

У меня есть следующая программа:

Код: Выделить всё

       public static void main(String[] args) throws Exception{

ForkJoinTask read = ForkJoinPool.commonPool().submit(new Runnable() {
@Override
public void run() {
SecurityManager appsm = System.getSecurityManager();

if (appsm != null) {
appsm.checkPermission(new PropertyPermission("os.arch", "read"));
System.out.println("Permissions are OK!!!!");
} else {
System.out.println("No system mangerrr :(");
}
}
});

read.get();

System.out.println("End of the program!");
}
Я также установил это системное свойство:

Код: Выделить всё

-Djava.security.manager
Мой вопрос следующий - почему иногда у меня появляется сообщение "Конец программы!" записывается в стандартный вывод, но иногда я получаю исключение в потоке «main» java.util.concurrent.ExecutionException: java.security.AccessControlException: доступ запрещен («java.util.PropertyPermission» «os.arch» «read») < /code> ?
Разве мне не следует всегда выдавать это исключение, поскольку потоки общего пула создаются без каких-либо разрешений? Разве это поведение не должно быть всегда одинаковым и не различаться в зависимости от выполнения?
Я запускаю это из своей среды разработки IntelliJ, используя Zulu OPEN JDK 8.0.252.

Подробнее здесь: https://stackoverflow.com/questions/626 ... -java-pool

Вернуться в «JAVA»