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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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