Singleton and singleton)

Source: Internet
Author: User

Singleton and singleton)

1. Use Cases

Stackorverflow

  • Controls concurrent access to a shared resource.
  • Access to the resource will be requested from multiple, disparate parts of the system.
  • There can be only one object.
  • From (http://stackoverflow.com/questions/228164/on-design-patterns-when-to-use-the-singleton)

2. Simple Mode

Public class BaseSingle
{
Public void Method ()
{
Console. WriteLine ("{1}. Method: {0}", this. GetHashCode (), this. GetType (). ToString ());
}
}

Public class UnsafeSingle: BaseSingle
{

Private static UnsafeSingle _ single;

Public static UnsafeSingle UnsafeSingleInstatce ()
{
If (null = _ single)
_ Single = new UnsafeSingle ();

Return _ single;
}

Private UnsafeSingle ()
{
Console. WriteLine (DateTime. Now. ToString () + ": constructor! ");
}

}

Disadvantage: when an object is not created, multiple threads simultaneously access not one returned object;

The test code is as follows:

Internal delegate void InstanceFun ();

Public void GetInstatnce ()
{
UnsafeSingle. UnsafeSingleInstatce (). Method ();
}

Public void MutilThreadTest (InstanceFun instanceFun)
{
Var started = DateTime. Now;
Thread [] threads = new Thread [1, 100];

For (var index = 0; index <100; index ++)
{
Thread thread = new Thread (new ThreadStart (instanceFun ));
Threads [index] = thread;
}

Foreach (var thread in threads)
{
Thread. Start ();
}
Console. WriteLine ("Running Duration: {0}; test only", (DateTime. Now-started). Milliseconds );
}

Test results:

DesignPattern. UnsafeSingle. Method: 45338574
DesignPattern. UnsafeSingle. Method: 30944461
DesignPattern. UnsafeSingle. Method: 62452338
DesignPattern. UnsafeSingle. Method: 43921088
DesignPattern. UnsafeSingle. Method: 18573725
DesignPattern. UnsafeSingle. Method: 8935080
DesignPattern. UnsafeSingle. Method: 48823647
DesignPattern. UnsafeSingle. Method: 28613802
DesignPattern. UnsafeSingle. Method: 40642054
DesignPattern. UnsafeSingle. Method: 52962918
DesignPattern. UnsafeSingle. Method: 29095347
DesignPattern. UnsafeSingle. Method: 62694277
DesignPattern. UnsafeSingle. Method: 54643837
DesignPattern. UnsafeSingle. Method: 36302867
DesignPattern. UnsafeSingle. Method: 49913678
DesignPattern. UnsafeSingle. Method: 52482287
DesignPattern. UnsafeSingle. Method: 41829035
DesignPattern. UnsafeSingle. Method: 57978397
DesignPattern. UnsafeSingle. Method: 13456355
DesignPattern. UnsafeSingle. Method: 23736788
DesignPattern. UnsafeSingle. Method: 42195492
DesignPattern. UnsafeSingle. Method: 28113429
DesignPattern. UnsafeSingle. Method: 2875151
DesignPattern. UnsafeSingle. Method: 56858914
DesignPattern. UnsafeSingle. Method: 2735313
DesignPattern. UnsafeSingle. Method: 50717245
DesignPattern. UnsafeSingle. Method: 30697644
DesignPattern. UnsafeSingle. Method: 47515266
DesignPattern. UnsafeSingle. Method: 30183720
DesignPattern. UnsafeSingle. Method: 65195544
DesignPattern. UnsafeSingle. Method: 22695823
DesignPattern. UnsafeSingle. Method: 8561069
DesignPattern. UnsafeSingle. Method: 33135541
DesignPattern. UnsafeSingle. Method: 17719913
DesignPattern. UnsafeSingle. Method: 32493892
DesignPattern. UnsafeSingle. Method: 57339132
DesignPattern. UnsafeSingle. Method: 38516275
DesignPattern. UnsafeSingle. Method: 33858004
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
Run Duration: 115
DesignPattern. UnsafeSingle. Method: 58042889

 

 

Subsequent Updates

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.