zoukankan      html  css  js  c++  java
  • 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. * */

  • 相关阅读:
    Jsoup系列学习(1)-发送get或post请求
    使用httpclient发送get或post请求
    charles 抓取eclipse中的请求
    springmvc学习资料整理
    springmvc和struts2的区别
    Linux常用命令
    Sql Server 2008R2 数据库发布与订阅
    jquery 父、子页面之间页面元素的获取,方法的调用
    封装ajax
    Maven 的安装配置
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2554842.html
Copyright © 2011-2022 走看看