java 中多线程下的单例模式

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. * */

原文地址:https://www.cnblogs.com/chenzhao/p/2554842.html