Singletone的类在JVM中只有一个实例,如果有很多对象来访问这个实例的时候性能会不会比protype的低?
Singletone的类的方法是不是也是synchronized 的?

解决方案 »

  1.   

    Singletone 跟 synchronized 没有任何关系。如果 Singletone 中有可变成员对象的话,那就是线程不安全的。比如,单例类中中有个:private SimpleDateFormat format = new SimpleDateFormat(); 那就是线程不安全的。如果单例类中的成员变量是不可变的,那就不存在线程安全问题,比如:private Pattern pattern = Pattern.compile("[0-9]+");
      

  2.   

    Singletone 只是共同用一个对象,会引起冲突synchronized 线程同步,高并发的情况 保持可控性
      

  3.   

    没关系,两个不同的概念
    Singletone不能保证线程安全,除了1L说的共同属性问题,还有可能方法内部访问了共同资源,如同个文件的读取,所以多线程时,可能相互间有干扰
    synchronized是线程同步
      

  4.   

    Singleton 是中国特色的类.只能生一个小孩(对象)~~,嘿嘿如果多线程访问这个对象就会有线程同步问题.需要synchronized来控制同步访问至于性能,和其他的类应该是差不多的.
    如果加了同步,当然要慢一点.谁用同步都会慢,呵呵
      

  5.   

    singleton和synchronized无关。
    理论上,singleton可以提高效率,特别是可能频繁创建的场合。但由此带来了线程安全的问题。比较著名的例子是Struts1的Action,虽然不是显式的singleton,但默认的方式是每个Action类,只有一个实例会被创建使用。因此Action中的应当注意线程安全,Action的成员变量应该是 线程/会话/请求/用户 无关的。