java中同一个类的2个不同实例调用该类的全局变量会有线程安全问题吗? 比如有个class A{}

1,有个classA{里面有个全局变量}2,另外有2个classB、C或是更多那么现在这样classA{//全局变量Mapmap=newHashMap();}外面很多非子... 1,有个class A{里面有个全局变量}
2,另外有2个class B 、C 或是更多
那么现在这样
class A {
//全局变量
Map map = new HashMap();
}
外面很多非子类对A中方法、变量等进行调用
// 非子类
class B {
A a = new A();

class C {
A a = new A();
}
问题1:以上2个类或是更多类似这样的非子类并发调用时候,对于全局变量map会有线程安全问题吗?
展开
 我来答
dc_1106
2012-05-25 · 超过14用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:32.6万
展开全部
你定义的map不是真正意义上的全局变量,是类内私有变量,每个类的对象都有自已的map对象,所以不会有线程安全问题

如果你定义的map是类的静态变量,这种情况下所有的类对象共享一个map,则在同时读写的时候会有线程安全问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
june_zhan
2012-05-25 · 超过11用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:28.7万
展开全部
HashMap是非线程安全的类,可能会调用的过期的值, 建议使用Hashtable 就可避免这个问题
更多追问追答
追问
什么叫调用过期的值呢?你是说这样呢 Map map = new Hashtable();还是这样Hashtable table = new Hashtable();呢?
追答
失效值是由于线程不同步,在某进行调用时,其真实值已被其他进程修改造成的
Hashtable不是Map接口的类 ,这样创建即可Hashtable t = new Hashtable();
你可以看到, 他的方法都是线程同步的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友df35b2d
2012-05-25 · 超过20用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:73.7万
展开全部
不会有线程安全问题,会为每个A类实例产生一个Map属性,互不干扰
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式