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

  • 相关阅读:
    Windows下使用Visual Studio Code搭建Go语言环境
    无缓冲和带缓冲channel的区别
    Asp.Net MVC如何返回401响应码
    从这里开始我的博客园
    java判定字符串中仅有数字和- 正则表达式匹配 *** 最爱那水货
    主席树
    Mybitis+springMVC 套路
    jeeplus ani 文档路径
    jquery easyui datagrid 多选只能获取一条数据
    python写入文件编码报错
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2554842.html
Copyright © 2011-2022 走看看