2 qq 26337263 qq_26337263 于 2016.03.29 17:59 提问

java多线程并发问题求解

父类中定义了几个成员变量String类型 a,b,c,这个父类被几个子类共同继承了,
各个子类中在构造器内初始化了a,b,c变量,问多线程调用每一个子类时会
产生并发问题吗?
父类:

1个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.29 18:07

首先,需要看你的这类是如何设计的,如果只是提供 了构造函数来初始化这几个成员变量,而没有提供外界修改方法如setA...等方法的话,那么你这个类就是线程安全的,因为对象的信息不可能被外界改变。
如果提供了修改方法,那么对于同一个对象,置于多线程访问条件下,就有可能出现数据不一致性问题。
其次,因为对象是存储在运行时数据区的堆中,是线程共享的,所以同一个对象如果可能同时被多个线程读、写操作时,就存在安全性问题。

qq_26337263
qq_26337263 好的,谢谢,我再看看
一年多之前 回复
wojiushiwo945you
wojiushiwo945you 回复小星星Zxx000000: 类创建对象时,变量当然是各不相同的啊。线程访问不同对象,不存在竞争问题的。只有多个线程同时访问相同对象时才会有并发问题啊。
一年多之前 回复
qq_26337263
qq_26337263 对于每一个子类来说a,b,c有不同的值,多线程访问下,不会有并发吗?
一年多之前 回复
wojiushiwo945you
wojiushiwo945you 回复小星星Zxx000000: 那么我就可以肯定你这个类是线程安全的。因为它是封闭的,不存在并发问题。
一年多之前 回复
qq_26337263
qq_26337263 都不一样了,
一年多之前 回复
qq_26337263
qq_26337263 子类只有构造器初始化变量,并无其他方提供修改;我个人觉得,因为子类好几个,每个子类初始化后的a,b,c变量
一年多之前 回复
qq_26337263
qq_26337263 子类只有构造器初始化变量,并无其他方提供修改;我个人觉得,因为子类好几个,每个子类初始化后的a,b,c变量
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片