这段代码会导致竞争条件吗?
Can this code lead to a race condition?
我正在学习 struts 并且我创建了一个 dispatchAction
检查用户权限然后转发到正确的页面。
这是代码:
public class UserCheck extends DispatchAction {
private static String role = "";
public class UserAction extends DispatchAction {
public ActionForward checPrivileges(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
boolean isAdmin;
//check if admin and put outputin in isAdmin
//check if user is admin
if (isAdmin) {
role = "admin";
} else {
role = "user";
}
//forwared based on role
}
}
此代码是否会导致竞争条件,因为属性角色是静态的并且在 UserCheck
的所有实例之间共享?
是的,如果出现以下情况,将导致竞争条件:
1。您有多个 UserAction 实例。
2。当您只有一个 UserAction 实例,但 checPrivileges 不是同步方法时。
我正在学习 struts 并且我创建了一个 dispatchAction
检查用户权限然后转发到正确的页面。
这是代码:
public class UserCheck extends DispatchAction {
private static String role = "";
public class UserAction extends DispatchAction {
public ActionForward checPrivileges(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
boolean isAdmin;
//check if admin and put outputin in isAdmin
//check if user is admin
if (isAdmin) {
role = "admin";
} else {
role = "user";
}
//forwared based on role
}
}
此代码是否会导致竞争条件,因为属性角色是静态的并且在 UserCheck
的所有实例之间共享?
是的,如果出现以下情况,将导致竞争条件:
1。您有多个 UserAction 实例。
2。当您只有一个 UserAction 实例,但 checPrivileges 不是同步方法时。