当前位置: 首页 > news >正文

单例模式(饿汉式,懒汉式)

单例模式:在整个java程序运行过程中,某个类自始至终只允许存在一个对象
    两种写法:
        饿汉式在类的加载过程中,该类的对象就已经存在了。
        懒汉式:类不调用方法,内存始终没有该类的对象,可能存在线程安全的问题。synchronized

详细见如下代码:

class ErHan{private static ErHan erHan=new ErHan();private ErHan() {}public  static ErHan getErHan(){return erHan;}}
class xianCheng extends Thread{public xianCheng() {}@Overridepublic void run() {//run没有返回值,无法知晓两个对象是否相同,可以打印出来
//        LanHan l = LanHan.getLanHan();
//        System.out.println(l);//run没有返回值,无法知晓两个对象是否相同,可以重新定义一个有返回值的方法GET()GET();}public static LanHan GET(){LanHan lanHan = LanHan.getLanHan();return lanHan;}
}
class LanHan {private LanHan(){}private static  LanHan lanHan;//懒汉是不调用方法,就不执行,存在线程安全问题,可以加同步锁 synchronized 保证安全public  static LanHan getLanHan(){if(lanHan==null){lanHan = new LanHan();}return lanHan;}}public class Single {public static void main(String[] args) {ErHan e1 = ErHan.getErHan();ErHan e2 = ErHan.getErHan();System.out.println("饿汉抢:"+e2.equals(e1));//单例模式,每次只允许一个对象,e2==e1//因为构造方法私有,无法new,即使继承Thread或者实现其他接口,也无法new出对象来执行线程//所以重新定义一个子类线程,在去抢LanHan的getLanHan方法xianCheng x1 = new xianCheng();xianCheng x2 = new xianCheng();x1.start();x2.start();System.out.println("懒汉抢:"+x1.GET().equals(x2.GET()));}
}


http://www.mrgr.cn/news/3896.html

相关文章:

  • 计算机毕业设计选题推荐-豆瓣书籍可视化分析-Python爬虫-K-means算法
  • 【论文阅读】PRADA: Protecting Against DNN Model Stealing Attacks(2019)
  • [数据集][目标检测]流水线物件检测数据集VOC+YOLO格式9255张26类别
  • Oracle(78)什么是绑定变量(Bind Variable)?
  • 圆弧的起点端点和凸度计算圆心、离散化为多段线
  • Java 前端与后端交互:解锁 RESTful API 设计的秘密
  • pyqt5用QPainter在扇形上面描绘数据点,并可点击提示
  • 优雅处理枚举前端丢失大Long精度问题
  • Debian12安装jdk8环境
  • Real DOM, Virtual DOM, Shadow DOM,之间有什么区别
  • 【今夕是何年】雅达利发布Atari 7800+游戏主机:配备无线手柄、HDMI接口
  • 通用人工智能不应该完全以人类为标准
  • CSS的:dir()伪类:根据文本方向定制样式的指南
  • idea 项目启动慢,报内存溢出,调整jvm参数
  • 简历相关!!
  • 详解golang内存管理
  • 自定义View实例
  • XSS的一些相关案例及DOM破坏的案例
  • 最新动态鲨鱼导航网引导页html源码
  • C++:模板 II(非类型模板参数,特化,分离编译)