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