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


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

Re: Singleton Pattern

Date 2011-08-16 06:57 -0700
From Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com>
Newsgroups comp.lang.java.programmer
Subject Re: Singleton Pattern
References (2 earlier) <j2b8q2$6pq$1@dont-email.me> <d490d89a-2e63-4099-9629-c275f2cf9847@glegroupsg2000goo.googlegroups.com> <4o6dnfZWI_mOZtTTnZ2dnUVZ_oqdnZ2d@earthlink.com> <l4udnXOiVIQ2itfTnZ2dnUVZ_uKdnZ2d@posted.palinacquisition> <mpqdnaDwH__n8NfTnZ2dnUVZ_q6dnZ2d@earthlink.com>
Message-ID <IbydnYJTAt_Y6tfTnZ2dnUVZ_vWdnZ2d@posted.palinacquisition> (permalink)

Show all headers | View raw


On 8/16/11 6:15 AM, Patricia Shanahan wrote:
> [...]
>> In C#, the run-time is permitted to, and in fact does, delay class
>> initialization until the class is actually accessed. I'd just always
>> assumed Java took advantage of the same optimizations.
>
> I read the last sentence as being a bit stronger than that. The JVM is
> required to delay class initialization until it is needed.

That's my read too.  And yes, that's even stronger assurance than what 
.NET provides.  So no real worries about premature initialization (see 
below).

> [...] Of course,
> the singleton could have another static method that gets called in a
> significant number of program runs that never call the getInstance
> method. If it does, it might be simpler and cleaner to refactor to
> change that in preference to jumping through hoops to avoid creating the
> instance during class initialization.

Exactly.  Such a situation is most likely to come about due to poor 
class design anyway, and so is not really a concern.  Much easier to 
just put the unrelated code that was potentially incurring the singleton 
initialization without using the singleton into a different class than 
to worry about actually writing code to defer singleton initialization 
explicitly.

Or looked at another way: if someone has messed up the class design such 
that a singleton class is used even though the singleton instance is 
never actually needed, I'm not sure I trust that person to correctly 
implement even the basic explicit singleton initialization 
synchronization code.  Even in that case, better to suffer the potential 
performance hit than to allow them to try to get the explicit 
initialization right.

So I would not be worried at all about using a field initializer to deal 
with singleton initialization.  It really is likely to be the best 
approach regardless of the situation, in all but the most unusual scenarios.

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