public class PersonDAO
的单例模式和并发没有任何关联!单例模式,在jvm中只有一个对象!多个线程调用这个对象的方法,没有任何问题的,
不过非常重要的原则就是:不要再DAO中写成员变量,
如
public class PersonDAO
private String id;
private String name;
private String user;
上面的成员数据都存在一个对象中,会使数据大乱!你的数据,VO(value object)都通过方法参数传递!
如:
public class PersonDAO
public void save(User user){代码}
public void update(User user){}
这样每个线程调用就不会有问题了!这些概念也容易混淆,spring中的IoC的bean注入,都是单子模式,没有问题的!
的单例模式和并发没有任何关联!单例模式,在jvm中只有一个对象!多个线程调用这个对象的方法,没有任何问题的,
不过非常重要的原则就是:不要再DAO中写成员变量,
如
public class PersonDAO
private String id;
private String name;
private String user;
上面的成员数据都存在一个对象中,会使数据大乱!你的数据,VO(value object)都通过方法参数传递!
如:
public class PersonDAO
public void save(User user){代码}
public void update(User user){}
这样每个线程调用就不会有问题了!这些概念也容易混淆,spring中的IoC的bean注入,都是单子模式,没有问题的!
解决方案 »
- must be of type [org.aopalliance.aop.Advice]错误问题
- struts2配置文件 打不开
- 如何通过腾讯API获取腾讯微博用户的信息
- 怎么在jsp里调用自己实现的类
- spring定时调度的问题
- 一个.net服务端被axis客户访问抛出异常的问题。
- eclipse问题请教高手
- LOMBOZ里怎么样设置在运行JSP,SERVLET时,TOMCAT也同时运行并显示
- 一个困扰了我很长时间的问题,大家平常使用spring到底又什么可取的优势
- 代友发贴:寻高手做一电子商务类网站(Java架构)
- ireport及jasperreport动态报表
- myeclipse+spring+hibernate的菜鸟问题(有关Spring事务与数据库操作),请高手指点
private String id;
private String name;
private String user;
这样写DAO,因为jvm中只有一个对象,所以这些数据都是共享的,会有问题的方法是没有问题的!
设成prototype,这样,每次访问的bean会新建,没有这个必要的!
你的POJO或者VO每次已经new了,每次实例化个dao,或耗费资源!下面这样的dao是必须每次重建的,否则不同步的哦!
public class PersonDAO
private String id;
private String name;
private String user;
1 你没有进行synchronized,所以这两个线程不是同步的,a和b不会互相阻塞2 可以都使用一份地址,只不过会出现线程安全问题,但是如果不存在公用的属性的话,是不会有线程安全问题的
其实我就是想知道 既然是同一个对象(static的嘛),怎么能同时(也就是并发)被两个线程调用呢? 我觉得是不是分身术.. :)
您只能输入 8000 个字符禁用UBB 内容存入剪贴板 回帖是一种美德!传说每天回帖即可获得 10 分可用分
您只能输入 8000 个字符禁用UBB 内容存入剪贴板 回帖是一种美德!传说每天回帖即可获得 10 分可用分
您只能输入 8000 个字符禁用UBB 内容存入剪贴板 回帖是一种美德!传说每天回帖即可获得 10 分可用分
您只能输入 8000 个字符禁用UBB 内容存入剪贴板 回帖是一种美德!传说每天回帖即可获得 10 分可用分
1.非写操作, 即各个线程只是读其中的数据,这时不需要同步,因为线程之间读到的数据是相互之间没有影响的,这时减弱为互斥(即一个时间内只能有一个线程对其进行读)
2.写操作 这涉及到数据的统一性,因此也要互斥,但是如果a线程的处理结果要为b线程所用,那么加强为a,b线程同步
将的很有道理,,建议楼主看下,java与模式,,
懒汉式中,,总过只有一个实例,,所以多线程是没问题,,
在饿汉式的单例中,,要加同步锁,,是为了防止在并发的线程使用时候,俩个线程同时进入创建俩个实例,,
所以要加同步锁
将的很有道理,,建议楼主看下,java与模式,,
懒汉式中,,总过只有一个实例,,所以多线程是没问题,,
在饿汉式的单例中,,要加同步锁,,是为了防止在并发的线程使用时候,俩个线程同时进入创建俩个实例,,
所以要加同步锁
能说说static 在内存中是怎么分配的吗
不完全赞同,DAO做成单利。我觉得DAO方法也要同步,否则两个线程同时操作一个VO就会有问题。(很少的情况,当我认为还是存在的)当然这样性能会有所损失,我见过的解决方法是这样的,说来和大家分享:通常我们是一个被操作的vo和数据库中的一天记录对应,这样从数据库中获得vo的时候,就有一个唯一的ID(或之类的)。这样们在起一个thread的时候,让id mod threadNumber == threadNumber.这样就可以做到线程之间互补干扰。
的单例模式和并发没有任何关联! 单例模式,在jvm中只有一个对象!多个线程调用这个对象的方法,没有任何问题的,
不过非常重要的原则就是:不要再DAO中写成员变量,
如
public class PersonDAO
private String id;
private String name;
private String user;
上面的成员数据都存在一个对象中,会使数据大乱! 你的数据,VO(value object)都通过方法参数传递!
如:
public class PersonDAO
public void save(User user){代码}
public void update(User user){}
这样每个线程调用就不会有问题了! 这些概念也容易混淆,spring中的IoC的bean注入,都是单子模式,没有问题的!