[ 
https://issues.apache.org/jira/browse/HBASE-15702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15261798#comment-15261798
 ] 

Heng Chen commented on HBASE-15702:
-----------------------------------

{quote}
I know you get what I meant, but "static" is required for getInstance and 
"public" just wastes for methods of a package-private class in that example.
If you want to explicitly specify that is a singleton, make a default 
constructor as private, but it might just have code messy unless the class is 
in the API.
{quote}

I think i get your point.
{code}
Class A {
  final static A  instance = new A();
}
{code}
And we could call A.instance when we need one instance of A, right?  And the 
class initialization phase in VM  could keep the instance thread-safe, right?





> Improve PerClientRandomNonceGenerator
> -------------------------------------
>
>                 Key: HBASE-15702
>                 URL: https://issues.apache.org/jira/browse/HBASE-15702
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Hiroshi Ikeda
>            Priority: Trivial
>             Fix For: 2.0.0
>
>         Attachments: HBASE-15702.patch, HBASE-15702_v1.patch, 
> HBASE-15702_v2.patch
>
>
> PerClientRandomNonceGenerator can be exposed to all the threads via the 
> static field ConnectionManager.nonceGenerator, but 
> PerClientRandomNonceGenerator uses Random, which should be ThreadLocalRandom 
> or something. (See javadoc of Random.)
> Moreover, ConnectionManager creates or refers the singleton instance of 
> PerClientThreadLocalRandom with a lock or volatile, but it should be created 
> as a static final field in PerClientThreadLocalRandom itself, and the 
> creation will be postponed until the field is actually refereed and the class 
> is being initialized.
> The same can be said for ConnectionManager.NoNonceGenerator.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to