同意Suraj的回答,但以为我会在需要使用特权块的地方添加一个具体示例。
想象一下,您已经构建了一个为可插拔模块提供大量服务的应用程序。因此,您的应用及其服务是受信任的代码。但是,可插拔模块不一定是受信任的,而是在其自己的类加载器中加载(并具有自己的保护域)。
当可插拔模块调用服务时,您正在实现自定义安全检查(“可插拔模块X是否具有使用此服务的权限”)。但是服务本身可能需要一些核心Java权限(读取系统属性,写入文件等)。需要这些权限的代码被包装为,
doPrivileged()以便有效地忽略来自不受信任的可插拔模块的不足权限-
仅适用于受信任的服务模块的特权。



