这段代码可以导致竞争条件吗?

时间:2016-02-05 10:01:35

标签: java multithreading struts-1

我正在学习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 个答案:

答案 0 :(得分:1)

是的,如果出现以下情况,将导致竞争条件:
1。您有多个UserAction实例。
2。当您只有一个UserAction实例时,但checPrivileges不是同步方法。