SecurityManager一:理解AccessController.doPrivileged()

时间:2024-12-21 21:37:38

AccessController.checkPermission()检测模型:

从VM Stack的current stack frame起逐个检测stack frome所指class的protectedDomain是否包含Permission.

(1)若stack frame所指class的protectedDomain不包含permission, 则java.security.AccessControlException.

(2)若stack frame使用了AccessController.doPriviledge(),则检测结束.

(3)若stack frame已到栈底, 则检测结束.

可见, AccessController.doPrivileged()提前告诉检测程序结束.