多线程情况下,单例模式性能问题

逍遥小妖 发布于 2014/07/14 14:19
阅读 2K+
收藏 0
单例模式在多线程运行环境下,多条线程同时共享一个对象,会对性能有影响吗,方法没有进行同步修饰
加载中
1
book
book
每个线程都有自己的运行栈空间,如果不涉及同步问题,加入都是调用某个方法,,那么单例不单例是没有影响的
0
CloudArchitect
CloudArchitect

性能的瓶颈基本都在db,如果算法的复杂度不高的话基本没啥性能影响。


0
先进哥
先进哥
那你最应该关心的是会否有并发访问冲突,而不是性能。。。。
先进哥
先进哥
@八木 先确定有没有能引起冲突的共享资源
八木
八木
并发冲突这块您有什么经验吗
0
s
submit1
你方法没有同步,那么单例模式也不会起作用了啊,如果两条线程同时调用了生成对象的方法的话,岂不是会生成两个对象吗?
0
逍遥小妖

引用来自“submit1”的评论

你方法没有同步,那么单例模式也不会起作用了啊,如果两条线程同时调用了生成对象的方法的话,岂不是会生成两个对象吗?
采用jvm保证只产生一个对象,饿汉式
0
木木三
木木三
一点关系没有
0
leegern
leegern

使用静态内部类创建实例,让jvm保证实例安全。

0
LCore
LCore

方法没有同步修饰,你应该考虑的是线程安全的问题。一个线程安全的单例模式:

package com.kiritor;
/**
 * @author Kiritor
 * 饿汉式单例模式*/
public class Singleton {
   private static Singleton singleton = null;
   private static Object object = new Object();
   //私有构造方法
   private Singleton()
   {
   
   }
   public static Singleton getInstance()
   {
    if(singleton== null)
   {
   synchronized(object)
   {
   
   if(singleton== null)
   {
       singleton = new Singleton();
    }
   }
  
   }
   return singleton;
   
   }
}




0x0001
0x0001
这个不安全
0
蛋蛋娃
蛋蛋娃
都这么多年了..为什么还要讨论设计模式?而且还是单例模式..走火入魔了啊!!!!!!!!!!
0
杨栓
杨栓
不涉及状态的改变的话无所谓,但涉及共享状态的时候肯定不如非单例好,但是有些特殊情况你也只能使用单例,所以还是具体情况具体分析,看如何做才能找到最有效的方式。
返回顶部
顶部