java - Web应用程序中的多线程

标签 java multithreading web

我有一个类用于显示面包屑中的当前位置。 此类正在从前端为每个用户初始化。 我的问题是我是否需要同步此类中的方法 如果是,哪些方法需要同步。有些困惑。所以请指教。

public class CrumbNav {

    private Stack<Crumb> stack;
    private Crumb crumb;

    public CrumbNav() {
        stack = new Stack<Crumb>();
        crumb = new Crumb("Home");
        stack.push(crumb);
    }


    public void addcrumb(String current) {          
        Crumb newCrumb = new Crumb(current);
        if (stack.peek().equals(newCrumb)) {
            return;
        }
        stack.push(newCrumb);
    }

    public void removeCurrent() {
        stack.pop();
    }

    public void eraseTrail() {
        stack.clear();
        stack.push(crumb);
    }

    public void removeCrumbsClicked(Crumb selected) {
        while (true) {
            if (stack.peek().equals(selected) || stack.isEmpty())
                break;

            stack.pop();
        }
    }

    public Crumb getLastBreadCrumb() {
        return stack.lastElement();
    }

    public Crumb getPreviousCrumb() {
        if (stack.size() > 1) {
            return stack.get(stack.size() - 2);
        }
        return null;
    }

    public List<Crumb> getCrumbTrail() {
        return stack.subList(0, stack.size());
    }
}

最佳答案

对象是按线程创建的,还是作为整个 session 的单例创建的,这取决于您使用的 Web 框架。默认情况下,Spring 将创建单个实例并且可能需要同步。其他网络框架可能不会。

请注意,在“快乐路径”世界中,只有一个 Activity 线程为任何给定用户呈现一个页面,但是没有什么可以阻止用户快速点击不同的链接来启动许多连接并因此启动线程。

关于java - Web应用程序中的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974675/

相关文章:

java - 隐藏列但未读取正确的值

java - 安卓 cocos2d

java - 用扭曲遍历一个无向、未加权的图 : minimum visits to each node

java - 识别游戏中的线程(也与 TCP 相关)

html - 如何使页脚居中到页面底部?

java - 在java中支持新的印度货币符号

java - 在多线程环境下制作 volatile Executor类

java - 错误: constructor Thread in class Thread cannot be applied to given types;

web-services - 如何在 Tomcat 8 中部署 HTML 文件和 Web 应用程序?

python - 如何识别我的 css 到我的 django 元素