我也来一段代码
public class Validator
{
public static ArrayList checkXXXX(Target t)
{
ArrayList errorList = new ArrayList();
.....
errorList.add(....)
return errorList;
}
}

把这么一个Static实现改为用对象池实现。假如按你所说“用对象池显然非线程安全对象就可以不作为方法的本地变量,作为类的实例变量”,把errorList作为类的实例变量的话,Validator会是无状态的吗?每次调用前或者调用后不需要重新初始化吗?

我从头都是说的EJB的对象池带来的好处...
我写个blog: http://www.canicula.net
比较详细的说明了我个人的看法,如果你不明白或者不能达成共识就算了,也没有必要无休止的争论:-)

> 我也来一段代码
> public class Validator
> {
> public static ArrayList checkXXXX(Target t)
> {
> ArrayList errorList = new ArrayList();
> .....
> errorList.add(....)
> return errorList;
> }
> }
>
> 把这么一个Static实现改为用对象池实现。假如按你所说“用
> 韵蟪叵匀环窍叱贪踩韵缶涂梢圆蛔魑椒ǖ谋镜乇淞?作为
> 嗟氖道淞俊保errorList作为类的实例变量的话,Valida
> or会是无状态的吗?每次调用前或者调用后不需要重新初始化
> 穑?
我告诉你errorlist不是能够共享的对象,用EJB没要求你把所有的东西都编程实例变量,你的errorlist状态是取决与方法的...
分特啊...

就是说errorlist是有状态的,你把它变为实例变量实际上就把对象变为了有状态的对象

blog做得很不错

抛开java中的static的纯语法特性,要不要使用它应该由你对象设计的具体情况来定,不要用结构思维来引导面向对象编辑

对于访问static变量和方法,会在该类的Class对象上加锁,而对该类的实例对象不会加锁,所以不会对该类的实例对象造成单线程访问。

对于singleton,由于访问的是单一对象实例,会在这个实例上加锁,所以极端情况下会造成单线程访问。

我觉得在考虑什么时候该定义为static应该从设计的意义上考虑,而不应从性能上考虑。

》》就是说errorlist是有状态的,你把它变为实例变量实际上就把对象变为了有状态的对象

errorList 为线程栈中所有
就不会有所谓状态问题

怎样利用网络挣钱
http://www.cashfiesta.com/php/join.php?

ref=smallestshrimp
(直接复制粘贴)
有疑问联系QQ:916630504
也可以看看这个

http://ourcashfiesta.spaces.live.com/?

_c11_BlogPart_n=1&_c11_BlogPart_handle=cns!

9CDE91F76104EED4!117&_c=BlogPart

我更喜欢这么用:

public class SingletonTest {

private static final SingletonTest st = new SingletonTest();

private SingletonTest() {
}

public static SingletonTest getInstance() {
return st;
}
}

static和性能没直接关系
re:static能大量用么?
answer:能

换个角度来看看Static到底怎样运行,就知道应不应该大量使用了:

运行一个含有Static关键字的类,它是怎么运行的呢?
调用Static关键字的类,或实例化含有Static关键字的类后,先将Static变量,Static方法,依次加载到内存中,以后从内存中调用即可,到到程序运行结束(生命周期Over了)。
一句话的事.

static 存在两个大问题

1,线程安全性

2,如果static对象太多的话,会导致启动程序变得非常慢

static和非static方法的一个重要区别是在调用的时候,是否需要先在堆中压入this指针,至于对内存占用的多少,可以说没什么区别。

类被装入内存以后,主要分数据区和方法区,static方法和非static方法都被装到方法区,类变量等信息装入数据区,类的实例越多,占用的内存就越多,但是一个类不管实例化多少个对象,它说占用的方法区都是那么多,而每一个实例都要对应一块数据区,这些地方用来保存类的状态。

有时间看看《深入java虚拟机》。
[该贴被benq998于2008-08-16 16:40修改过]