Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #7094

Re: Singleton Pattern

Date 2011-08-13 16:43 -0700
From Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com>
Newsgroups comp.lang.java.programmer
Subject Re: Singleton Pattern
References <3be6e6cf-fa32-4503-9457-b0a1caef8f29@w11g2000vbp.googlegroups.com>
Message-ID <vt-dnf5wc8CJkdrTnZ2dnUVZ_jKdnZ2d@posted.palinacquisition> (permalink)

Show all headers | View raw


On 8/13/11 1:56 PM, vbhavsar@gmail.com wrote:
> [...]
> public class Singleton {
>
> 	private static Singleton _instance;
> 	private Singleton(){}
>
> 	private synchronized static void createInstance(){
> 		_instance = new Singleton();
> 	}
>
> 	public static Singleton getInstance(){
> 		if (_instance == null){
> 			createInstance();
> 		}
> 		return _instance;
> 	}
> }
>
>
> The synchronized createInstance() method would eliminate the need to
> do double-checked locking and the synchronization would happen only
> when multiple threads call getInstance() before _instance has been
> instantiated.
>
> Anyone see any issues with this?

It depends on what's legal.

For some kinds of singletons, it is not harmful to initialize the 
instance multiple times.  There's neither a performance nor interference 
issue.  For those kinds of singletons, your proposal is fine.

But for others, one of the reasons the class is a singleton in the first 
place is that something bad will happen if more than one instance is 
even created, never mind used.  In those cases, the code you posted is 
broken.

Frankly, there is rarely any need to be any more "clever" than to just 
create the singleton instance in the static field initializer.  Let the 
JVM deal with the threading issues automatically and leave it at that.

I'd never even heard of the "single-element enum type" variation of 
singleton initialization.  That one in particular sounds like a 
completely over-engineered approach.

Pete

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Singleton Pattern "vbhavsar@gmail.com" <vbhavsar@gmail.com> - 2011-08-13 13:56 -0700
  Re: Singleton Pattern markspace <-@.> - 2011-08-13 14:41 -0700
  Re: Singleton Pattern Patricia Shanahan <pats@acm.org> - 2011-08-13 14:48 -0700
  Re: Singleton Pattern Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-08-13 16:43 -0700
    Re: Singleton Pattern Ian <m4r35n357@gmail.com> - 2011-08-15 15:00 +0100
      Re: Singleton Pattern Lew <lewbloch@gmail.com> - 2011-08-15 07:56 -0700
        Re: Singleton Pattern Patricia Shanahan <pats@acm.org> - 2011-08-15 22:07 -0700
          Re: Singleton Pattern Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-08-16 00:09 -0700
            Re: Singleton Pattern Patricia Shanahan <pats@acm.org> - 2011-08-16 06:15 -0700
              Re: Singleton Pattern Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-08-16 06:57 -0700
                Re: Singleton Pattern Patricia Shanahan <pats@acm.org> - 2011-08-16 09:25 -0700
                Re: Singleton Pattern Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-08-16 18:10 -0700
  Re: Singleton Pattern Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-08-13 20:56 -0400
    Re: Singleton Pattern Lew <lewbloch@gmail.com> - 2011-08-13 21:12 -0700
  Re: Singleton Pattern Rajeev <rajeev.nospam@gmail.com> - 2011-08-14 06:37 -0700

csiph-web