社区
Web 开发
帖子详情
jsp实现线程安全访问
bryan_lin
2009-03-18 02:50:53
譬如要对一篇文章(id=10)进行编辑,即edit.jsp?id=10
这时管理员a访问edit.jsp?id=10取得编辑权限之后
如果管理员b同样访问edit.jsp?id=10则应该提示正在被编辑
问题是这个应该怎么实现?
我的想法是在数据库中对10的文章进行标记,即标记为正在被a编辑
但是异常状况的时候(譬如浏览器不正常退出)的时候 怎么取消该标记 使得其他人能够正常编辑?
谢谢~
...全文
96
8
打赏
收藏
jsp实现线程安全访问
譬如要对一篇文章(id=10)进行编辑,即edit.jsp?id=10 这时管理员a访问edit.jsp?id=10取得编辑权限之后 如果管理员b同样访问edit.jsp?id=10则应该提示正在被编辑 问题是这个应该怎么实现? 我的想法是在数据库中对10的文章进行标记,即标记为正在被a编辑 但是异常状况的时候(譬如浏览器不正常退出)的时候 怎么取消该标记 使得其他人能够正常编辑? 谢谢~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bryan_lin
2009-03-18
打赏
举报
回复
[Quote=引用 4 楼 zou_wei_forever 的回复:]
可以用乐观锁实现,在数据被保存到数据库是进行检查:
在表中增加一个表示版本的字段,第一个人读出出来那笔记录更新后版本号为1,第二个人读出出来那笔记录版本号为2,当第二个人再保存后发现他的数据的版本跟数据库中那笔记录的版本不符,就不允许修改。
[/Quote]
这样的话 第二个人读出来做出修改之后却不能保存 用户体验太差
想要的效果是 第二个人都不能往外读~
jishu_vip
2009-03-18
打赏
举报
回复
楼主的方法也是可以的,只是文章正在编辑的时候,对文章增加一个标识位,表示正在编辑。
解决异常状况(如浏览器不正常退出):
同时数据库中记录正在编辑的用户名,间隔一段时间判断一下该用户名是否还为登录状态(或则其它用户编辑的时候也同时进行判断之前记录的用户名是否还为登录状态)如果不是登录状态则取消该文章为正在编辑。
sjkof
2009-03-18
打赏
举报
回复
[Quote=引用 4 楼 zou_wei_forever 的回复:]
可以用乐观锁实现,在数据被保存到数据库是进行检查:
在表中增加一个表示版本的字段,第一个人读出出来那笔记录更新后版本号为1,第二个人读出出来那笔记录版本号为2,当第二个人再保存后发现他的数据的版本跟数据库中那笔记录的版本不符,就不允许修改。
[/Quote]
同意
zou_wei_forever
2009-03-18
打赏
举报
回复
可以用乐观锁实现,在数据被保存到数据库是进行检查:
在表中增加一个表示版本的字段,第一个人读出出来那笔记录更新后版本号为1,第二个人读出出来那笔记录版本号为2,当第二个人再保存后发现他的数据的版本跟数据库中那笔记录的版本不符,就不允许修改。
downloadvip
2009-03-18
打赏
举报
回复
顶了
老黄瓜_
2009-03-18
打赏
举报
回复
楼主可以用 数据集合(list) 存储 文章 id 以及对应的修改时间 当第二个人要去 访问的时候 就遍历 这个数据集合(list) 另外起线程扫描 当前时间 如果时间过长 就从集合中删除掉 该文章
个人想法 没有考虑过 修改文章数据量大的效率,性能 情况
therehere
2009-03-18
打赏
举报
回复
帮顶!!!!!!!!!!!!!!!!!!!!!!
tomcat6.0 64位
tomcat6.0 64位
Java中
实现
线程安全
的几种方法
我们知道Java有一个特性,多线程,它是一个同时运行多个线程的过程。 当多个线程处理相同的数据,并且我们的数据值发生变化时,这种情况不是
线程安全
的,我们会得到不一致的结果。 当一个线程已经在一个对象上工作并阻止另一个线程在同一个对象上工作时,这个过程称为
线程安全
。 在Java中,通过如下方法
实现
线程安全
: 使用线程同步 使用Volatile关键字 使用Atomic变量 使用final关键字 使用线程同步 同步是一次只允许一个线程完成特定任务的过程。 意思是当多个线程同时执行,想要同时
访问
同一个资源时,就
servlet是单例的 所以需要
线程安全
以及如何
实现
线程安全
Servlet/
JSP
技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/
JSP
默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/
JSP
程序时并没有注意到多
线程安全
性的问题,这往往造成编写的程序在少量用户
访问
时没有任何问题,而在并发用户上升到一定值时,就会经常出现一些莫明其妙的问题。 Se
在Servlet和
JSP
中如何
实现
多
线程安全
编写Servlet和
JSP
的时候,
线程安全
问题很容易被忽略,如果忽视了这个问题,你的程序就存在潜在的隐患.1.Servlet的生命周期Servlet的生命周期是由Web容器负责的,当客户端第一次请求Servlet时,容器负责初始化Servlet,也就是实例化这个Servlet类.以后这个实例就负责客户端的请求,一般不会再实例化其他Servlet类,也就是有多个线程在使用这个实例.Servlet
Filter的
线程安全
问题
6)Filter的
线程安全
问题: 和Servlet一样,为了提高性能,Filter也采取多线程模式。即:每一个线程来应答一个用户浏览器,而且这个线程和用户要
访问
的目标Servlet的线程是同一个线程。说得更准确一点,当用户
访问
某个资源需要经过过滤器时,服务器中一个线程为了应答这个客户请求,先调用过滤器中 的doFilter方法,再根据是否有chain.doFilter的指令,决定是否调用目标资源...
Web 开发
81,120
社区成员
341,753
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章