java 中多线程下的单例模式

ptfcwnsohq 2011-11-18 02:40:49
加精
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. * */

原文地址:http://g.csdn.net/5203277
...全文
1420 84 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
84 条回复
切换为时间正序
请发表友善的回复…
发表回复
再见品月 2011-11-29
  • 打赏
  • 举报
回复


我擦。。这也能推荐。。。两年不来csdn。。。csdn的管理员就这水平了?
qwer_boo 2011-11-27
  • 打赏
  • 举报
回复
这都能被推荐...
kbest 2011-11-24
  • 打赏
  • 举报
回复

这个可以
opmic 2011-11-24
  • 打赏
  • 举报
回复
感谢楼主分享,单例确实要用多线程去测试
pkx100861 2011-11-24
  • 打赏
  • 举报
回复
 hai xing ba!
前浪 2011-11-24
  • 打赏
  • 举报
回复
是有问题的 当有1000个并发进来 这个时候大家都 判断 if(person==null) 为真,所以有999个在同步块外等候 ,每个都要进入一下同步块 这就悲剧了
ccaaiigg 2011-11-24
  • 打赏
  • 举报
回复
一群2的很得人,这帖子也能上首页?
fanghui2268 2011-11-23
  • 打赏
  • 举报
回复
厉害哦
zhou_1985_liang 2011-11-23
  • 打赏
  • 举报
回复
private的构造函数,产生不了类的实例,你怎么调用public的成员方法?
cirxyl55 2011-11-23
  • 打赏
  • 举报
回复
有点语无伦次,呵呵
失约的季节 2011-11-23
  • 打赏
  • 举报
回复
表示看不懂
轻弹浅唱 2011-11-23
  • 打赏
  • 举报
回复
楼主啊,以后记得代码写清楚点,身为程序员要严谨
玉怀一捧雪 2011-11-23
  • 打赏
  • 举报
回复
我学过C语言!!应为是理工!!可是看不懂啊
zhijunwoo 2011-11-22
  • 打赏
  • 举报
回复
我又算是温习了。。
EngQio 2011-11-22
  • 打赏
  • 举报
回复
多线程没接触太多,见识见识了
izard999 2011-11-22
  • 打赏
  • 举报
回复
LZ可能大意了
scrack 2011-11-22
  • 打赏
  • 举报
回复
对这些代码 表示怀疑 但是楼主写这个 确实道出了单例模式 多线程的味道
程序员的龟 2011-11-22
  • 打赏
  • 举报
回复
看到头晕!!!
dingherry 2011-11-22
  • 打赏
  • 举报
回复
这谁推荐的文章?????烂成无法看的程度也是一种境界
Defonds 2011-11-21
  • 打赏
  • 举报
回复
单例。。
加载更多回复(34)

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧