如果两个或更多用户开始使用相同的页面并开始编辑重大更改,那么拥有一个巨大的客户资料页面将在我的数据库中发生,因此计划实施线程概念,其中只有一个用户可以使用该客户页面
我知道线程概念,但对如何实现它感到困惑 希望我也需要使用Singleton类
任何建议或逻辑都会有所帮助
我正在使用Struts,Hibernate框架工作
答案 0 :(得分:0)
您可以使用应用程序上下文来存储标志变量。 Action将使用其值仅允许一个同时执行。
public class TestAction extends ActionSupport implements ApplicationAware {
private static final String APP_BUSY_KEY = "APP_BUSY";
Map<String, Object> map;
@Override
public void setApplication(Map<String, Object> map) {
this.map = map;
}
@Override
public String execute() throws Exception {
if (map.containsKey(APP_BUSY_KEY)) {
return ERROR;
} else {
map.put(APP_BUSY_KEY, "1");
try {
// action logic here
} finally {
map.remove(APP_BUSY_KEY);
}
return SUCCESS;
}
}
}
如果您计划为两个请求实现类似的逻辑(在显示值后锁定并在提交新值后释放锁定),那么逻辑将更复杂,您还需要在超时后处理锁定释放。