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. * */
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. * */
相关文章推荐
- 多线程下的观察者模式--Java实现
- Java之多线程中的Master-Worker模式
- Java多线程实例——等待超时模式
- java多线程之消费者生产者模式
- [置顶] Java多线程编程模式实战指南(三):Two-phase Termination模式
- Java多线程编程环境中单例模式的实现
- Java多线程 - 实现生产者与消费者模式
- Java多线程(十九):并发协作生产者消费者设计模式
- Java多线程编程环境中单例模式的实现
- Java单利模式与多线程总结归纳
- java 实现支持多线程的单件模式
- Java多线程编程模式实战指南(二):Immutable Object模式--转载
- Java多线程编程模式 Immutable Object模式
- Java多线程知识点总结——进阶篇(五)之多线程下的单例模式
- Java多线程编程-单例模式几种写法的错与对
- Java 多线程下的单例模式
- java多线程模式ThreadLocal原理简述及其使用详解
- 设计模式------Java多线程之静态代理模式
- JAVA_多线程_单例模式
- Java多线程之单例模式-yellowcong