突然脑筋短路,一个关于类的方法的问题,请大家指点。

03-01-05 henry.t
一个类,有私有成员变量,有公有方法,方法里有方法内变量
问题是:
1。 如果这是一般的类(不是STATIC)那么当然没什么问题,谁声明谁用,不管什么变量都声明人使用,没别人能用。但如果是STATIC类(虚拟机内永远有该实例,而且只有一个),或有多线程同时访问一个类实例,(分别在这两种情况下)那么方法内的变量会不会有同步问题?也就是说,当有两个进程或线程同时访问同一个方法时,其方法内的局部变量会不会有同步问题(大家都用同一组变量而不是各用各的)。
2。如果该方法时STATIC的呢???(相对与第一个问题)

不好意思,突然想到这个问题,感觉有点短路了而且有点弱智,请大家细细回答,(如果我以上的某个说法时错误的,也请指出)谢谢
祝新年快乐

banq
2003-01-06 13:06
当然需要同步。

henry.t
2003-01-06 14:30
那怎么在CSDN上有人回答,只要是方法内的局部变量,都没有这个同步问题啊?

到底哪个正确啊,我都糊涂了,不过既然是BANG你回答的,我想你的应该正确是吧?

banq
2003-01-06 16:15
对不起,我说同步是这个方法要同步,如果你的这个方法可能被多个线程同时访问,因为一个方法内不可能只有一些局部变量。

具体问题具体分析,同步会牺牲性能。

hxz
2003-01-06 17:15

henry.t
2003-01-06 22:23
不好意思,我再罗索一句,如果只有局部变量呢?我当然知道有全局的要同步。
谢谢。

jacob
2003-01-07 15:23
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

jacob
2003-01-07 15:25
为什么没有回车。我不满意。

banq
2003-01-07 18:03
据我理解,局部变量包含两种:
一个类似int 之类的原始型变量
二是String之类的对象型变量;

如果是后者,容易发生deadlock,原因:
1线程正在占据A资源,等待B资源的释放;
2线程正在占据B资源,等待A资源的释放;

Danial
2003-01-28 16:46
刚登陆进来浏览了一下,
我觉得这不是问题呀?局部变量不存在同步的问题。进入一个函数就分配压栈之类的, 出来就释放了,