web应用想要达到完全的线程安全,需要注意哪些地方?
来源:互联网 发布:儿童英语音乐软件 编辑:程序博客网 时间:2024/06/06 01:39
web应用想要达到完全的线程安全,需要注意哪些地方?
关注web安全知识,正好搜到一个前辈在帖子下的答复,现记录下来,希望可以在日后用到:
Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。Servlet/JSP默认是以多线程模式执行的。做到以下三点,以实现线程安全:
1、实现 SingleThreadModel 接口
该接口指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法将不会有两个线程被同时执行,当然也就不存在线程安全的问题。如:
Public class Concurrent Test extends HttpServlet implements SingleThreadModel { ………… }
2、同步对共享数据的操作
使用synchronized 关键字能保证一次只有一个线程可以访问被保护的区段.
3、避免使用实例变量
本实例中的线程安全问题是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。
但是,如果一个Servlet实现了SingleThreadModel接口,Servlet引擎将为每个新的请求创建一个单独的Servlet实例,这将引起大量的系统开销。SingleThreadModel在Servlet2.4中已不再提倡使用;
同样如果在程序中使用同步来保护要使用的共享的数据,也会使系统的性能大大下降。这是因为被同步的代码块在同一时刻只能有一个线程执行它,使得其同时处理客户请求的吞吐量降低,而且很多客户处于阻塞状态。另外为保证主存内容和线程的工作内存中的数据的一致性,要频繁地刷新缓存,这也会大大地影响系统的性能。所以在实际的开发中也应避免或最小化 Servlet 中的同步代码;
- web应用想要达到完全的线程安全,需要注意哪些地方?
- 做一个开放性的网站需要注意哪些地方[转]
- 集群环境下开发需要注意哪些地方?
- 网页设计中需要注意的WEB安全色谱
- WEB 安全方面需要特别注意的问题
- 开发线程安全的Spring Web应用
- 开发线程安全的Spring Web应用
- 开发线程安全的Spring Web应用
- 开发线程安全的Spring Web应用
- 开发线程安全的Spring Web应用
- 开发线程安全的Spring Web应用
- 开发线程安全的Spring Web应用
- 开发线程安全的Spring Web应用
- Spring Web应用的线程安全
- Spring Web应用的线程安全
- 开发线程安全的Spring Web应用
- 开发线程安全的Spring Web应用
- WEB测试应该注意哪些地方,怎样才能做好WEB测试
- 细数JDK里的设计模式
- [NOIP 2005]谁拿了最多奖学金 模拟
- ROC曲线的解释(很形象)
- 蓝懿ioS 技术内容和心得交流 11.1 正反向
- arcGIS Engine控件介绍
- web应用想要达到完全的线程安全,需要注意哪些地方?
- 洛谷2629 好消息,坏消息
- Codeforces Round #328 (Div. 2)
- hdoj 1108 最小公倍数 【gcd果题】
- 权限位运算简单demo
- C++中重载、重写(覆盖)和隐藏的区别
- java的发展前景
- C语言库函数的实现
- linux下c/c++实例之十socket服务器实例