¸ÅÊö
SingletonģʽҪÇóÒ»¸öÀàÓÐÇÒ½öÓÐÒ»¸öʵÀý£¬²¢ÇÒÌṩÁËÒ»¸öÈ«¾ÖµÄ·ÃÎʵ㡣Õâ¾ÍÌá³öÁËÒ»¸öÎÊÌ⣺ÈçºÎÈÆ¹ý³£¹æµÄ¹¹ÔìÆ÷£¬ÌṩһÖÖ»úÖÆÀ´±£Ö¤Ò»¸öÀàÖ»ÓÐÒ»¸öʵÀý£¿¿Í»§³ÌÐòÔÚµ÷ÓÃijһ¸öÀàʱ£¬ËüÊDz»»á¿¼ÂÇÕâ¸öÀàÊÇ·ñÖ»ÄÜÓÐÒ»¸öʵÀýµÈÎÊÌâµÄ£¬ËùÒÔ£¬ÕâÓ¦¸ÃÊÇÀàÉè¼ÆÕßµÄÔðÈΣ¬¶ø²»ÊÇÀàʹÓÃÕßµÄÔðÈΡ£
´ÓÁíÒ»¸ö½Ç¶ÈÀ´Ëµ£¬SingletonģʽÆäʵҲÊÇÒ»ÖÖÖ°ÔðÐÍģʽ¡£ÒòΪÎÒÃÇ´´½¨ÁËÒ»¸ö¶ÔÏó£¬Õâ¸ö¶ÔÏó°çÑÝÁ˶ÀÒ»ÎÞ¶þµÄ½ÇÉ«£¬ÔÚÕâ¸öµ¥¶ÀµÄ¶ÔÏóʵÀýÖУ¬Ëü¼¯ÖÐÁËËüËùÊôÀàµÄËùÓÐȨÁ¦£¬Í¬Ê±ËüÒ²¼ç¸ºÁËÐÐʹÕâÖÖȨÁ¦µÄÖ°Ôð£¡
Òâͼ
±£Ö¤Ò»¸öÀà½öÓÐÒ»¸öʵÀý£¬²¢Ìṩһ¸ö·ÃÎÊËüµÄÈ«¾Ö·ÃÎʵ㡣
Ä£ÐÍͼ
Â߼ģÐÍͼ£º

ÎïÀíÄ£ÐÍͼ£º

Éú»îÖеÄÀý×Ó
ÃÀ¹ú×ÜͳµÄְλÊÇSingleton£¬ÃÀ¹úÏÜ·¨¹æ¶¨ÁË×ÜͳµÄÑ¡¾Ù£¬ÈÎÆÚÒÔ¼°¼ÌÈεÄ˳Ðò¡£ÕâÑù£¬ÔÚÈκÎʱ¿ÌÖ»ÄÜÓÉÒ»¸öÏÖÈεÄ×Üͳ¡£ÎÞÂÛÏÖÈÎ×ÜͳµÄÉí·ÝΪºÎ£¬ÆäÍ·ÏÎ"ÃÀÀû¼áºÏÖÚ¹ú×Üͳ"ÊÇ·ÃÎÊÕâ¸öְλµÄÈ˵ÄÒ»¸öÈ«¾ÖµÄ·ÃÎʵ㡣

ÎåÖÖʵÏÖ
1£®¼òµ¥ÊµÏÖ
public sealed class Singleton 2{ 3 static Singleton instance=null; 4 5 Singleton() 6 { 7 } 8 9 public static Singleton Instance 10 { 11 get 12 { 13 if (instance==null) 14 { 15 instance = new Singleton(); 16 } 17 return instance; 18 } 19 } 20} |
ÕâÖÖ·½Ê½µÄʵÏÖ¶ÔÓÚÏß³ÌÀ´Ëµ²¢²»Êǰ²È«µÄ£¬ÒòΪÔÚ¶àÏ̵߳Ļ·¾³ÏÂÓпÉÄܵõ½SingletonÀàµÄ¶à¸öʵÀý¡£Èç¹ûͬʱÓÐÁ½¸öÏß³ÌÈ¥Åжϣ¨instance
== null£©£¬²¢Çҵõ½µÄ½á¹ûÎªÕæ£¬ÕâʱÁ½¸öÏ̶߳¼»á´´½¨ÀàSingletonµÄʵÀý£¬ÕâÑù¾ÍÎ¥±³ÁËSingletonģʽµÄÔÔò¡£Êµ¼ÊÉÏÔÚÉÏÊö´úÂëÖУ¬ÓпÉÄÜÔÚ¼ÆËã³ö±í´ïʽµÄֵ֮ǰ£¬¶ÔÏóʵÀýÒѾ±»´´½¨£¬µ«ÊÇÄÚ´æÄ£ÐͲ¢²»Äܱ£Ö¤¶ÔÏóʵÀýÔÚµÚ¶þ¸öÏ̴߳´½¨Ö®Ç°±»·¢ÏÖ¡£
¸ÃʵÏÖ·½Ê½Ö÷ÒªÓÐÁ½¸öÓŵ㣺
1)ÓÉÓÚʵÀýÊÇÔÚ Instance ÊôÐÔ·½·¨ÄÚ²¿´´½¨µÄ£¬Òò´ËÀà¿ÉÒÔʹÓø½¼Ó¹¦ÄÜ£¨ÀýÈ磬¶Ô×ÓÀà½øÐÐʵÀý»¯£©£¬¼´Ê¹Ëü¿ÉÄÜÒýÈë²»ÏëÒªµÄÒÀÀµÐÔ¡£
2)Ö±µ½¶ÔÏóÒªÇó²úÉúÒ»¸öʵÀý²ÅÖ´ÐÐʵÀý»¯£»ÕâÖÖ·½·¨³ÆÎª¡°¶èÐÔʵÀý»¯¡±¡£¶èÐÔʵÀý»¯±ÜÃâÁËÔÚÓ¦ÓóÌÐòÆô¶¯Ê±ÊµÀý»¯²»±ØÒªµÄ
singleton¡£
2£®°²È«µÄÏß³Ì
public sealed class Singleton 2{ 3 static Singleton instance=null; 4 static readonly object padlock = new object(); 5 6 Singleton() 7 { 8 } 9 10 public static Singleton Instance 11 { 12 get 13 { 14 lock (padlock) 15 { 16 if (instance==null) 17 { 18 instance = new Singleton(); 19 } 20 return instance; 21 } 22 } 23 } 24} |
ÕâÖÖ·½Ê½µÄʵÏÖ¶ÔÓÚÏß³ÌÀ´ËµÊǰ²È«µÄ¡£ÎÒÃÇÊ×ÏÈ´´½¨ÁËÒ»¸ö½ø³Ì¸¨Öú¶ÔÏó£¬Ïß³ÌÔÚ½øÈëʱÏȶԸ¨Öú¶ÔÏó¼ÓËøÈ»ºóÔÙ¼ì²â¶ÔÏóÊÇ·ñ±»´´½¨£¬ÕâÑù¿ÉÒÔÈ·±£Ö»ÓÐÒ»¸öʵÀý±»´´½¨£¬ÒòΪÔÚͬһ¸öʱ¿Ì¼ÓÁËËøµÄÄDz¿·Ö³ÌÐòÖ»ÓÐÒ»¸öÏ߳̿ÉÒÔ½øÈë¡£ÕâÖÖÇé¿öÏ£¬¶ÔÏóʵÀýÓÉ×îÏȽøÈëµÄÄǸöÏ̴߳´½¨£¬ºóÀ´µÄÏß³ÌÔÚ½øÈëʱ£¨instence
== null£©Îª¼Ù£¬²»»áÔÙÈ¥´´½¨¶ÔÏóʵÀýÁË¡£µ«ÊÇÕâÖÖʵÏÖ·½Ê½Ôö¼ÓÁ˶îÍâµÄ¿ªÏú£¬ËðʧÁËÐÔÄÜ¡£
3£®Ë«ÖØËø¶¨
public sealed class Singleton 2{ 3 static Singleton instance=null; 4 static readonly object padlock = new object(); 5 6 Singleton() 7 { 8 } 9 10 public static Singleton Instance 11 { 12 get 13 { 14 if (instance==null) 15 { 16 lock (padlock) 17 { 18 if (instance==null) 19 { 20 instance = new Singleton(); 21 } 22 } 23 } 24 return instance; 25 } 26 } 27} |
ÕâÖÖʵÏÖ·½Ê½¶Ô¶àÏß³ÌÀ´ËµÊǰ²È«µÄ£¬Í¬Ê±Ï̲߳»ÊÇÿ´Î¶¼¼ÓËø£¬Ö»ÓÐÅж϶ÔÏóʵÀýûÓб»´´½¨Ê±Ëü²Å¼ÓËø£¬ÓÐÁËÎÒÃÇÉÏÃæµÚÒ»²¿·ÖµÄÀïÃæµÄ·ÖÎö£¬ÎÒÃÇÖªµÀ£¬¼ÓËøºó»¹µÃÔÙ½øÐжÔÏóÊÇ·ñÒѱ»´´½¨µÄÅжϡ£Ëü½â¾öÁËÏ̲߳¢·¢ÎÊÌ⣬ͬʱ±ÜÃâÔÚÿ¸ö
Instance ÊôÐÔ·½·¨µÄµ÷ÓÃÖж¼³öÏÖ¶ÀÕ¼Ëø¶¨¡£Ëü»¹ÔÊÐíÄú½«ÊµÀý»¯ÑÓ³Ùµ½µÚÒ»´Î·ÃÎʶÔÏóʱ·¢Éú¡£Êµ¼ÊÉÏ£¬Ó¦ÓóÌÐòºÜÉÙÐèÒªÕâÖÖÀàÐ͵ÄʵÏÖ¡£´ó¶àÊýÇé¿öÏÂÎÒÃÇ»áÓþ²Ì¬³õʼ»¯¡£ÕâÖÖ·½Ê½ÈÔÈ»Óкܶàȱµã£ºÎÞ·¨ÊµÏÖÑÓ³Ù³õʼ»¯¡£
4£®¾²Ì¬³õʼ»¯
public sealed class Singleton 2{ 3 static readonly Singleton instance=new Singleton(); 4 5 static Singleton() 6 { 7 } 8 9 Singleton() 10 { 11 } 12 13 public static Singleton Instance 14 { 15 get 16 { 17 return instance; 18 } 19 } 20} |
¿´µ½ÉÏÃæÕâ¶Î¸»ÓÐÏ·¾çÐԵĴúÂ룬ÎÒÃÇ¿ÉÄÜ»á²úÉú»³ÒÉ£¬Õ⻹ÊÇSingletonģʽÂð£¿ÔÚ´ËʵÏÖÖУ¬½«ÔÚµÚÒ»´ÎÒýÓÃÀàµÄÈκγÉԱʱ´´½¨ÊµÀý¡£¹«¹²ÓïÑÔÔËÐп⸺Ôð´¦Àí±äÁ¿³õʼ»¯¡£¸ÃÀà±ê¼ÇΪ
sealed ÒÔ×èÖ¹·¢ÉúÅÉÉú£¬¶øÅÉÉú¿ÉÄÜ»áÔö¼ÓʵÀý¡£´ËÍ⣬±äÁ¿±ê¼ÇΪ readonly£¬ÕâÒâζ×ÅÖ»ÄÜÔÚ¾²Ì¬³õʼ»¯ÆÚ¼ä£¨´Ë´¦ÏÔʾµÄʾÀý£©»òÔÚÀ๹Ô캯ÊýÖзÖÅä±äÁ¿¡£
¸ÃʵÏÖÓëÇ°ÃæµÄʾÀýÀàËÆ£¬²»Í¬Ö®´¦ÔÚÓÚËüÒÀÀµ¹«¹²ÓïÑÔÔËÐпâÀ´³õʼ»¯±äÁ¿¡£ËüÈÔÈ»¿ÉÒÔÓÃÀ´½â¾ö Singleton
ģʽÊÔͼ½â¾öµÄÁ½¸ö»ù±¾ÎÊÌ⣺ȫ¾Ö·ÃÎʺÍʵÀý»¯¿ØÖÆ¡£¹«¹²¾²Ì¬ÊôÐÔΪ·ÃÎÊʵÀýÌṩÁËÒ»¸öÈ«¾Ö·ÃÎʵ㡣´ËÍ⣬ÓÉÓÚ¹¹Ô캯ÊýÊÇ˽Óеģ¬Òò´Ë²»ÄÜÔÚÀà±¾ÉíÒÔÍâʵÀý»¯
Singleton ÀࣻÒò´Ë£¬±äÁ¿ÒýÓõÄÊÇ¿ÉÒÔÔÚϵͳÖдæÔÚµÄΨһµÄʵÀý¡£
ÓÉÓÚ Singleton ʵÀý±»Ë½Óо²Ì¬³ÉÔ±±äÁ¿ÒýÓã¬Òò´ËÔÚÀàÊ״α»¶Ô Instance ÊôÐԵĵ÷ÓÃËùÒýÓÃ֮ǰ£¬²»»á·¢ÉúʵÀý»¯¡£
ÕâÖÖ·½·¨Î¨Ò»µÄDZÔÚȱµãÊÇ£¬Äú¶ÔʵÀý»¯»úÖÆµÄ¿ØÖÆÈ¨½ÏÉÙ¡£ÔÚ Design Patterns ÐÎʽÖУ¬ÄúÄܹ»ÔÚʵÀý»¯Ö®Ç°Ê¹Ó÷ÇĬÈϵĹ¹Ô캯Êý»òÖ´ÐÐÆäËûÈÎÎñ¡£ÓÉÓÚÔڴ˽â¾ö·½°¸ÖÐÓÉ
.NET Framework ¸ºÔðÖ´Ðгõʼ»¯£¬Òò´ËÄúûÓÐÕâЩѡÏî¡£ÔÚ´ó¶àÊýÇé¿öÏ£¬¾²Ì¬³õʼ»¯ÊÇÔÚ .NET
ÖÐʵÏÖ Singleton µÄÊ×Ñ¡·½·¨¡£
5£®ÑÓ³Ù³õʼ»¯
public sealed class Singleton 2{ 3 Singleton() 4 { 5 } 6 7 public static Singleton Instance 8 { 9 get 10 { 11 return Nested.instance; 12 } 13 } 14 15 class Nested 16 { 17 static Nested() 18 { 19 } 20 21 internal static readonly Singleton instance = new Singleton(); 22 } 23} |
ÕâÀ³õʼ»¯¹¤×÷ÓÐNestedÀàµÄÒ»¸ö¾²Ì¬³ÉÔ±À´Íê³É£¬ÕâÑù¾ÍʵÏÖÁËÑÓ³Ù³õʼ»¯£¬²¢¾ßÓкܶàµÄÓÅÊÆ£¬ÊÇÖµµÃÍÆ¼öµÄÒ»ÖÖʵÏÖ·½Ê½¡£
ʵÏÖÒªµã
l.SingletonģʽÊÇÏÞÖÆ¶ø²»ÊǸĽøÀàµÄ´´½¨¡£
2.SingletonÀàÖеÄʵÀý¹¹ÔìÆ÷¿ÉÒÔÉèÖÃΪProtectedÒÔÔÊÐí×ÓÀàÅÉÉú¡£
3.Singletonģʽһ°ã²»ÒªÖ§³ÖIcloneable½Ó¿Ú£¬ÒòΪÕâ¿ÉÄܵ¼Ö¶à¸ö¶ÔÏóʵÀý£¬ÓëSingletonģʽµÄ³õÖÔÎ¥±³¡£
4.Singletonģʽһ°ã²»ÒªÖ§³ÖÐòÁл¯£¬ÕâÒ²ÓпÉÄܵ¼Ö¶à¸ö¶ÔÏóʵÀý£¬ÕâÒ²ÓëSingletonģʽµÄ³õÖÔÎ¥±³¡£
5.SingletonÖ»¿¼ÂÇÁ˶ÔÏó´´½¨µÄ¹ÜÀí£¬Ã»Óп¼Âǵ½Ïú»ÙµÄ¹ÜÀí£¬¾ÍÖ§³ÖÀ¬»ø»ØÊյį½Ì¨ºÍ¶ÔÏóµÄ¿ªÏúÀ´½²£¬ÎÒÃÇÒ»°ãû±ØÒª¶ÔÆäÏú»Ù½øÐÐÌØÊâµÄ¹ÜÀí¡£
6.Àí½âºÍÀ©Õ¹SingletonģʽµÄºËÐÄÊÇ¡°ÈçºÎ¿ØÖÆÓû§Ê¹ÓÃnew¶ÔÒ»¸öÀàµÄ¹¹ÔìÆ÷µÄÈÎÒâµ÷Óᱡ£
7.¿ÉÒԺܼòµ¥µÄÐÞ¸ÄÒ»¸öSingleton£¬Ê¹ËüÓÐÉÙÊý¼¸¸öʵÀý£¬ÕâÑù×öÊÇÔÊÐíµÄ¶øÇÒÊÇÓÐÒâÒåµÄ¡£
Óŵã
1.ʵÀý¿ØÖÆ£ºSingleton »á×èÖ¹ÆäËû¶ÔÏóʵÀý»¯Æä×Ô¼ºµÄ Singleton
¶ÔÏóµÄ¸±±¾£¬´Ó¶øÈ·±£ËùÓжÔÏó¶¼·ÃÎÊΨһʵÀý
2.Áé»îÐÔ£ºÒòΪÀà¿ØÖÆÁËʵÀý»¯¹ý³Ì£¬ËùÒÔÀà¿ÉÒÔ¸ü¼ÓÁé»îÐÞ¸ÄʵÀý»¯¹ý³Ì
ȱµã
1.¿ªÏú£ºËäÈ»ÊýÁ¿ºÜÉÙ£¬µ«Èç¹ûÿ´Î¶ÔÏóÇëÇóÒýÓÃʱ¶¼Òª¼ì²éÊÇ·ñ´æÔÚÀàµÄʵÀý£¬½«ÈÔÈ»ÐèҪһЩ¿ªÏú¡£¿ÉÒÔͨ¹ýʹÓþ²Ì¬³õʼ»¯½â¾ö´ËÎÊÌ⣬ÉÏÃæµÄÎåÖÖʵÏÖ·½Ê½ÖÐÒѾ˵¹ýÁË¡£
2.¿ÉÄܵĿª·¢»ìÏý£ºÊ¹Óà singleton ¶ÔÏó£¨ÓÈÆäÔÚÀà¿âÖж¨ÒåµÄ¶ÔÏó£©Ê±£¬¿ª·¢ÈËÔ±±ØÐë¼Çס×Ô¼º²»ÄÜʹÓÃ
new ¹Ø¼ü×ÖʵÀý»¯¶ÔÏó¡£ÒòΪ¿ÉÄÜÎÞ·¨·ÃÎÊ¿âÔ´´úÂ룬Òò´ËÓ¦ÓóÌÐò¿ª·¢ÈËÔ±¿ÉÄÜ»áÒâÍâ·¢ÏÖ×Ô¼ºÎÞ·¨Ö±½ÓʵÀý»¯´ËÀà¡£
3.¶ÔÏóµÄÉú´æÆÚ£ºSingleton ²»Äܽâ¾öɾ³ýµ¥¸ö¶ÔÏóµÄÎÊÌâ¡£ÔÚÌṩÄÚ´æ¹ÜÀíµÄÓïÑÔÖУ¨ÀýÈç»ùÓÚ
.NET Framework µÄÓïÑÔ£©£¬Ö»ÓÐ Singleton ÀàÄܹ»µ¼ÖÂʵÀý±»È¡Ïû·ÖÅ䣬ÒòΪËü°üº¬¶Ô¸ÃʵÀýµÄ˽ÓÐÒýÓá£ÔÚijЩÓïÑÔÖУ¨Èç
C++£©£¬ÆäËûÀà¿ÉÒÔɾ³ý
¶ÔÏóʵÀý£¬µ«ÕâÑù»áµ¼Ö Singleton ÀàÖгöÏÖÐü¸¡ÒýÓá£
ÊÊÓÃÐÔ
1.µ±ÀàÖ»ÄÜÓÐÒ»¸öʵÀý¶øÇÒ¿Í»§¿ÉÒÔ´ÓÒ»¸öÖÚËùÖÜÖªµÄ·ÃÎʵã·ÃÎÊËüʱ¡£
2.µ±Õâ¸öΨһʵÀýÓ¦¸ÃÊÇͨ¹ý×ÓÀ໯¿ÉÀ©Õ¹µÄ£¬²¢ÇÒ¿Í»§Ó¦¸ÃÎÞÐè¸ü¸Ä´úÂë¾ÍÄÜʹÓÃÒ»¸öÀ©Õ¹µÄʵÀýʱ¡£
Ó¦Óó¡¾°
1.ÿ̨¼ÆËã»ú¿ÉÒÔÓÐÈô¸É¸ö´òÓ¡»ú£¬µ«Ö»ÄÜÓÐÒ»¸öPrinter Spooler£¬±ÜÃâÁ½¸ö´òÓ¡×÷ҵͬʱÊä³öµ½´òÓ¡»ú¡£
£¨Õª×ÔÂÀÕðÓîµÄC#Éè¼ÆÄ£Ê½£¨7£©£Singleton Pattern£©
2.PC»úÖпÉÄÜÓм¸¸ö´®¿Ú£¬µ«Ö»ÄÜÓÐÒ»¸öCOM1¿ÚµÄʵÀý¡£
3.ϵͳÖÐÖ»ÄÜÓÐÒ»¸ö´°¿Ú¹ÜÀíÆ÷¡£
4..NET RemotingÖзþÎñÆ÷¼¤»î¶ÔÏóÖеÄSigleton¶ÔÏó£¬È·±£ËùÓеĿͻ§³ÌÐòµÄÇëÇó¶¼Ö»ÓÐÒ»¸öʵÀýÀ´´¦Àí¡£
ÍêÕûʾÀý
ÕâÊÇÒ»¸ö¼òµ¥µÄ¼ÆÊýÆ÷Àý×Ó£¬ËĸöÏß³Ìͬʱ½øÐмÆÊý¡£
using System; 2using System.Threading; 3 4namespace SigletonPattern.SigletonCounter 5{ 6 /// <summary> 7 /// ¹¦ÄÜ£º¼òµ¥¼ÆÊýÆ÷µÄµ¥¼þģʽ 8 /// ±àд£ºTerrylee 9 /// ÈÕÆÚ£º2005Äê12ÔÂ06ÈÕ 10 /// </summary> 11 public class CountSigleton 12 { 13 ///´æ´¢Î¨Ò»µÄʵÀý 14 static CountSigleton uniCounter = new CountSigleton(); 15 16 ///´æ´¢¼ÆÊýÖµ 17 private int totNum = 0; 18 19 private CountSigleton() 20 21 { 22 ///Ïß³ÌÑÓ³Ù2000ºÁÃë 23 Thread.Sleep(2000); 24 } 25 26 static public CountSigleton Instance() 27 28 { 29 30 return uniCounter; 31 32 } 33 34 ///¼ÆÊý¼Ó1 35 public void Add() 36 { 37 totNum ++; 38 } 39 40 ///»ñµÃµ±Ç°¼ÆÊýÖµ 41 public int GetCounter() 42 { 43 return totNum; 44 } 45 46 } 47} |
using System; 2using System.Threading; 3using System.Text; 4 5namespace SigletonPattern.SigletonCounter 6{ 7 /// <summary> 8 /// ¹¦ÄÜ£º´´½¨Ò»¸ö¶àÏ̼߳ÆÊýµÄÀà 9 /// ±àд£ºTerrylee 10 /// ÈÕÆÚ£º2005Äê12ÔÂ06ÈÕ 11 /// </summary> 12 public class CountMutilThread 13 { 14 public CountMutilThread() 15 { 16 17 } 18 19 /// <summary> 20 /// Ï̹߳¤×÷ 21 /// </summary> 22 public static void DoSomeWork() 23 { 24 ///¹¹ÔìÏÔʾ×Ö·û´® 25 string results = ""; 26 27 ///´´½¨Ò»¸öSigletonʵÀý 28 CountSigleton MyCounter = CountSigleton.Instance(); 29 30 ///Ñ»·µ÷ÓÃËÄ´Î 31 for(int i=1;i<5;i++) 32 { 33 ///¿ªÊ¼¼ÆÊý 34 MyCounter.Add(); 35 36 results +="Ïß³Ì"; 37 results += Thread.CurrentThread.Name.ToString() + "¡ª¡ª¡µ"; 38 results += "µ±Ç°µÄ¼ÆÊý£º"; 39 results += MyCounter.GetCounter().ToString(); 40 results += "\n"; 41 42 Console.WriteLine(results); 43 44 ///Çå¿ÕÏÔʾ×Ö·û´® 45 results = ""; 46 } 47 } 48 49 public void StartMain() 50 { 51 52 Thread thread0 = Thread.CurrentThread; 53 54 thread0.Name = "Thread 0"; 55 56 Thread thread1 =new Thread(new ThreadStart(DoSomeWork)); 57 58 thread1.Name = "Thread 1"; 59 60 Thread thread2 =new Thread(new ThreadStart(DoSomeWork)); 61 62 thread2.Name = "Thread 2"; 63 64 Thread thread3 =new Thread(new ThreadStart(DoSomeWork)); 65 66 thread3.Name = "Thread 3"; 67 68 thread1.Start(); 69 70 thread2.Start(); 71 72 thread3.Start(); 73 74 ///Ïß³Ì0Ò²Ö»Ö´ÐÐºÍÆäËûÏß³ÌÏàͬµÄ¹¤×÷ 75 DoSomeWork(); 76 } 77 } 78} |
using System; 2using System.Text; 3using System.Threading; 4 5namespace SigletonPattern.SigletonCounter 6{ 7 /// <summary> 8 /// ¹¦ÄÜ£ºÊµÏÖ¶àÏ̼߳ÆÊýÆ÷µÄ¿Í»§¶Ë 9 /// ±àд£ºTerrylee 10 /// ÈÕÆÚ£º2005Äê12ÔÂ06ÈÕ 11 /// </summary> 12 public class CountClient 13 { 14 public static void Main(string[] args) 15 { 16 CountMutilThread cmt = new CountMutilThread(); 17 18 cmt.StartMain(); 19 20 Console.ReadLine(); 21 } 22 } 23} |
×ܽá
SingletonÉè¼ÆÄ£Ê½ÊÇÒ»¸ö·Ç³£ÓÐÓõĻúÖÆ£¬¿ÉÓÃÓÚÔÚÃæÏò¶ÔÏóµÄÓ¦ÓóÌÐòÖÐÌṩµ¥¸ö·ÃÎʵ㡣ÎÄÖÐͨ¹ýÎåÖÖʵÏÖ·½Ê½µÄ±È½ÏºÍÒ»¸öÍêÕûµÄʾÀý£¬Íê³ÉÁ˶ÔSingletonģʽµÄÒ»¸ö×ܽáºÍ̽Ë÷¡£ÓÃÒ»¾ä¹ã¸æ´ÊÀ´¸ÅÀ¨Singletonģʽ¾ÍÊÇ¡°¼òÔ¼¶ø²»¼òµ¥¡±¡£
|