您的位置:首页 > 编程语言 > Java开发

java 中多线程下的单例模式

2011-11-22 14:52 176 查看
01.package namespace;

02.

03.

04.

05.//单例模式--- 饿汉式

06./*

07.class Person

08.{

09. private Person p=new Person ();

10. private Person () {}

11. public Person GetInstance()

12. {

13. return p;

14. }

15.}

16.*/

17./*

18. * 下面是懒汉式,只在在单线种的情况下,而这种情况在多线程的情况下会多现在不安全现在,因为如果有两个线程同时访问到new Person ,那么我就生成两个对象,这样就违反了

19. * 单例模式下面一个是在多线

20. * */

21./*

22.class Person

23.{

24. private Person person=null;

25. private Person () {}

26. public Person getInstance()

27. {

28. if(person==null)

29. {

30. person =new Person();

31. }

32. return person;

33. }

34.

35.}*/

36.class Person

37.{

38. private Person person=null;

39. private Person () {}

40. public Person getInstance()

41. {

42. if(person==null)

43. {

44. synchronized(this)

45. {

46. if(person==null)

47. person =new Person();

48.

49. }

50. }

51. return person ;

52. }

53.}

54./*

55. *

56. * 这样在synchronized 线程控制块里面进行多线程的控制,就不会再出现多个线程访问时出现多个对象的情况了.

57. * 还有一点就是外面的person ==null 判断是用来提高效率的,不然第一次都要对锁进行判断,消耗浓资源

58. * 这样可以有次的提高效率

59. * */

60.public class Single {

61. public static void main(String args[])

62. {

63. System.out.println("this is java");

64. }

65.}

66./*

67. * 单例模式就是在内存中想只能存在一个对象,而不允许再实例化其他的对象

68. *

69. * */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息