最简单的java单例

来源:互联网 发布:北京做网络推广的公司 编辑:程序博客网 时间:2024/06/03 06:43

 最简单的java单例源代码:

 

class Singleton
{
 private Singleton()
 {

 }

 public static Singleton instance = null;

 public static Singleton getInstance()
 {
  if(instance == null)
   instance = new Singleton();
  return instance;
 } 

 public static void main(String args[])
 {
  Singleton s1, s2;

  s1 = Singleton.getInstance();
  s2 = Singleton.getInstance();

  System.out.println(s1 == s2);
  System.out.println(s1.equals(s2));

  System.out.println(s1);
  System.out.println(s2);
 }
}

/*
class Singleton
{
 private static int count = 0;

 private Singleton()
 {

 }

 public static Singleton instance = null;

 public static Singleton getInstance()
 {
  if(instance == null)
   instance = new Singleton();
  count++;
  return instance;
 }

 public static void display()
 {
  System.out.println(count);
 }

 public static void main(String args[])
 {
  Singleton s1, s2;

  s1 = Singleton.getInstance();
  s1.display();

  s2 = Singleton.getInstance();
  s2.display();

  System.out.println(s1 == s2);
  System.out.println(s1.equals(s2));

  System.out.println(s1);
  System.out.println(s2);
 }
}

*/

 

上述代码对于单线程的程序是不会有问题的,但是如果用于多线程,很可能产生问题。改进方法

将public static Singleton getInstance()改成public static synchronized Singleton getInstance()

原创粉丝点击