关于线程安全方面的

zzxiaoma 2011-05-20 04:14:09
我看网上有许多关于hibernate的泛型dao类
public abstract class BasicDaoImpl<E , PK extends Serializable> implements BasicDao<E, PK> {

private HibernateTemplate hibernateTemplate;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}

public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
private Class<?> entityClass;

/**
* 获取E实例类的类型
*/
public BasicDaoImpl() {
Class<?> c = this.getClass();
Type t = c.getGenericSuperclass();
if (t instanceof ParameterizedType) {
this.entityClass = (Class<?>) ((ParameterizedType) t)
.getActualTypeArguments()[0];
}
}

public E get(PK id) {
return (E) this.getHibernateTemplate().get(this.entityClass, id);
}
。。。。。。
}
因为要spring管理,一般情况要设置为单例的,但是private Class<?> entityClass;是不是线程安全的呢?
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxiaoma 2011-05-20
  • 打赏
  • 举报
回复
我怎么觉得单例才会线程不安全呢,如果是多例,各自实例维护自己的成员变量。单例的话一个线程修改了单例的成员变量,另一个线程正好是修改前访问的,那就数据不一致了。
穆大叔 2011-05-20
  • 打赏
  • 举报
回复
不太懂,帮顶。。
码道功臣 2011-05-20
  • 打赏
  • 举报
回复
客串出场
zn85600301 2011-05-20
  • 打赏
  • 举报
回复
单例 是线程安全的
ChDw 2011-05-20
  • 打赏
  • 举报
回复
因为这个对象不是静态的,所以只需要考虑同一实例下的线程安全问题

所以不存在线程安全问题
awcx8888 2011-05-20
  • 打赏
  • 举报
回复
关注
友情帮顶
zzxiaoma 2011-05-20
  • 打赏
  • 举报
回复
总的来说就是说如果父类是抽象类,里面有成员变量,子类是单例,是不是就不存在线程安全?
zzxiaoma 2011-05-20
  • 打赏
  • 举报
回复
我说错了,其他类要继承这个类,子类是单例的,那这个抽象类是不是单例的?spring里面没有对这个抽象类管理
xxy8100 2011-05-20
  • 打赏
  • 举报
回复
单例就没问题了 不然要synchronized
ChDw 2011-05-20
  • 打赏
  • 举报
回复
单例,而且这个属性只会初始化一次,不会再修改。所以是线程安全的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧