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

  • 相关阅读:
    UVA 10600 ACM Contest and Blackout(次小生成树)
    UVA 10369
    UVA Live 6437 Power Plant 最小生成树
    UVA 1151 Buy or Build MST(最小生成树)
    UVA 1395 Slim Span 最小生成树
    POJ 1679 The Unique MST 次小生成树
    POJ 1789 Truck History 最小生成树
    POJ 1258 Agri-Net 最小生成树
    ubuntu 用法
    ubuntu 搭建ftp服务器,可以通过浏览器访问,filezilla上传文件等功能
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2554842.html
Copyright © 2011-2022 走看看