Согласен с ответом Сураджа , но подумал, что добавлю конкретный пример, где мне потребовалось использование привилегированного блока.
Представьте, что вы создали приложение, которое предоставляет ряд услуг подключаемым модулям. Таким образом, ваше приложение и его сервисы являются доверенным кодом. Однако подключаемые модули не обязательно являются доверенными и загружаются в свои собственные загрузчики классов (и имеют свои собственные домены защиты).
Когда подключаемый модуль вызывает службу, вы выполняете пользовательские проверки безопасности («имеет ли подключаемый модуль X разрешение на использование этой службы»). Но для самой службы может потребоваться некоторое разрешение ядра Java (чтение системного свойства, запись в файл и т. Д.). Код, требующий этих разрешений, обернут в doPrivileged()
, так что недостаточные разрешения от ненадежных подключаемых модулей эффективно игнорируются - применяются только привилегии вашего модуля доверенных служб.