Struts2的线程安全性
【什么是线程安全性?】
在多线程并发访问的情况下,如果一个对象中的变量的值不会随访问的线程而变化则是线程安全的。反之则称为非线程安全的。
【Servlet是线程安全的吗?】
[非线程安全的]
public class HiServlet extends HttpServlet {
int i = 20; @Override
protected void service(HttpServletRequest req, HttpServletResponse resp){
System.out.println("i = " + i);
i++;
}
}
[线程安全的]
public class HiServlet extends HttpServlet {
//int i = 20; @Override
protected void service(HttpServletRequest req, HttpServletResponse resp){
int i = 20; System.out.println("i = " + i);
i++;
}
}
Servlet是使用单例模式进行实现的。请求过程中只会创建一个Servlet对象。所以Servlet是否是线程安全的与代码有关。
Struts1也是使用单例模式实现的。
【Struts2是线程安全的吗?】
 public class HiAction {
     private int i = 20;
     public HiAction() {
         System.out.println("HiAction对象被创建了......");
     }
     public String execute(){
         System.out.println("i = " + i);
         i++;
         return "success";
     }
 }
Struts2中的Action是通过多例模式进行实现的,所以每次调用都会创建一个新的对象。所以它是线程安全的。
Struts2的线程安全性的更多相关文章
- servlet和Struts2的线程安全性对比
		1.>在servlet中,定义成员变量是不安全的,,因为,每次请求操作的是该同一个成员变量,,会出现线程不安全的问题. 2.>而在struts2中,在Action中定义成员变量是安全的,, ... 
- 【转】Struts2的线程安全 和Struts2中的设计模式----ThreadLocal模式
		[转]Struts2的线程安全 和Struts2中的设计模式----ThreadLocal模式 博客分类: 企业应用面临的问题 java并发编程 Struts2的线程安全ThreadLocal模式St ... 
- 关于java中final关键字与线程安全性
		在Java5中,final关键字是非常重要而事实上却经常被忽视其作为同步的作用.本质上讲,final能够做出如下保证:当你创建一个对象时,使用final关键字能够使得另一个线程不会访问到处于" ... 
- Java并发编程学习笔记(一)——线程安全性
		主要概念:线程安全性.原子性.原子变量.原子操作.竟态条件.复合操作.加锁机制.重入.活跃性与性能. 1.当多个线程访问某个状态变量并且其中有一个线程执行写入操作时,必须采用同步机制来协同这些线程对变 ... 
- Spring并发访问的线程安全性问题
		Spring并发访问的线程安全性问题 http://windows9834.blog.163.com/blog/static/27345004201391045539953/ 由于Spring MVC ... 
- pthread的线程安全性
		pthread不一定能够保证线程安全性,特别是在开启编译器优化的情况下,某些编译器优化很可能破坏pthread的线程安全性. 由于不同的编译器可能有不同的优化技术,所以pthread的实现与编译器有很 ... 
- SimpleDateFormat 的性能和线程安全性
		系统正常运行一段时间后,QA报给我一个异常: java.lang.OutOfMemoryError: GC overhead limit exceeded at java.text.DecimalFo ... 
- 《Java并发编程实战》第二章 线程安全性 读书笔记
		一.什么是线程安全性 编写线程安全的代码 核心在于要对状态訪问操作进行管理. 共享,可变的状态的訪问 - 前者表示多个线程訪问, 后者声明周期内发生改变. 线程安全性 核心概念是正确性.某个类的行为与 ... 
- JAVA并发编程实战---第二章:线程安全性
		对象的状态是指存储在状态变量中的数据.对象的状态可能包括其他依赖对象的域.例如HashMap的状态不仅存储在HashMap本身,还存储在许多Map.Entry对象中.对象的状态中包含了任何可能影响其外 ... 
随机推荐
- 贪心 Codeforces Round #304 (Div. 2) B. Soldier and Badges
			题目传送门 /* 题意:问最少增加多少值使变成递增序列 贪心:排序后,每一个值改为前一个值+1,有可能a[i-1] = a[i] + 1,所以要 >= */ #include <cstdi ... 
- 总结 - 常见的JavaScript兼容性问题
			添加事件的方法 (元素, 绑定的事件类型, 事件触发的方法) addHandler: function (element, type, handler) { if (element.addEventL ... 
- 今天发现一个汉字转换成拼音的模块,记录一下,直接pip install xpinyin即可
			http://blog.csdn.net/qq_33232071/article/details/50915760 
- Aria's Loops
			https://www.hackerrank.com/contests/101hack41/challenges/arias-loops 可以看我以前的笔记,http://www.cnblogs.co ... 
- MongoDB管理练习
			一.索引 1.插入10W条数据 文档内容为:{name:zs-i,age:1} 2016-06-07T14:35:57.041+0800 I CONTROL [initandlisten] > ... 
- PHP的扩展知识
			1. 图片的上传大小受哪一些限制? 答:浏览器 其实php.ini文件里面 1. upload_max_filesize = 2M 限制单个文件上传大小 2. post_max_size = 8M ... 
- 洛谷P2765 魔术球问题(贪心 最大流)
			题意 已经很简洁了吧. 假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,...的球. (1)每次只能在某根柱子的最上面放球. (2)在同一根柱子中,任何2个相邻球的编号之和为完全 ... 
- P1967 货车运输 未完成
			#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ... 
- 事件对象(示例、封装函数EventUtil())
			事件对象 什么是事件对象? 在触发DOM上的事件时都会产生一个对象. 事件对象event 1.DOM中的事件对象 (1)\type属性用于获取事件类型 (2)\target属性用于获取事件目标 (3) ... 
- 写给技术lead的招聘指南
			工作这么久,面试过的工程师不下两三百人.大部份招到的人都比靠谱当然也有失败的例子.把亲身经历总结如下: 1. 什么人一定不能招: 理解能力差: 对你提出的问题,答不对题,重复提问.面试官可以在面试当中 ... 
