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

织梦网站栏目调用网络推广搜索引擎

织梦网站栏目调用,网络推广搜索引擎,大一网页设计代码英语,做视频网站成本高吗单例模式 作用:单例模式的核心是保证一个类只有一个实例,并且提供一个访问实例的全局访问点。 实现方式优缺点饿汉式线程安全,调用效率高 ,但是不能延迟加载懒汉式线程安全,调用效率不高,能延迟加载双重检…

单例模式

作用:单例模式的核心是保证一个类只有一个实例,并且提供一个访问实例的全局访问点。

实现方式优缺点
饿汉式线程安全,调用效率高 ,但是不能延迟加载
懒汉式线程安全,调用效率不高,能延迟加载
双重检测锁在懒汉式的基础上解决并发问题
静态内部类线程安全,资源利用率高,可以延时加载
枚举单例线程安全,调用效率高,但是不能延迟加载

饿汉式

在类加载的时候立即实例化对象,实现的步骤是先私有化构造方法,对外提供唯一的静态入口方法

public class SingletonInstance1 {private byte[] b1 = new byte[1024*1024];private byte[] b2 = new byte[1024*1024];private byte[] b3 = new byte[1024*1024];// 声明此类型的变量,并实例化,当该类被加载的时候就完成了实例化并保存在了内存中private final static SingletonInstance1 instance = new SingletonInstance1();// 私有化所有的构造方法,防止直接通过new关键字实例化private SingletonInstance1(){}// 对外提供一个获取实例的静态方法public static SingletonInstance1 getInstance(){return instance;}
}

在类加载时直接创建对象可能会造成空间的浪费

懒汉式

public class SingletonInstance2 {// 声明此类型的变量,但没有实例化private static SingletonInstance2 instance = null;// 私有化所有的构造方法,防止直接通过new关键字实例化private SingletonInstance2(){}// 对外提供一个获取实例的静态方法public static SingletonInstance2 getInstance(){if(instance == null){// 当instance不为空的时候才实例化instance = new SingletonInstance2();}return instance;}
}

外部调用getInstance()方法时才会创建对象(判断对象是否存在),但是不能保证多线程并发的情况下的线程安全,所以就出现了双重检测锁模式

双重检测锁模式

public class SingletonInstance3 {// 声明此类型的变量,但没有实例化,防止指令重排private volatile static SingletonInstance3 instance;// 私有化所有的构造方法,防止直接通过new关键字实例化private SingletonInstance3(){}// 对外提供一个获取实例的静态方法public static SingletonInstance3 getInstance(){if(instance == null){synchronized (SingletonInstance3.class){if(instance == null){// 当instance不为空的时候才实例化instance = new SingletonInstance3();/*1.分配内存空间2.执行构造法法,初始化对象3.把这个对象指向这个空间如果不加volatile 会执行重排序 1 3 2*/}}}return instance;}
}

静态内部类

public class SingletonInstance4 {// 静态内部类public static class SingletonClassInstance{// 声明外部类型的静态常量public static final SingletonInstance4 instance = new SingletonInstance4();}// 私有化构造方法private SingletonInstance4(){}// 对外提供的唯一获取实例的方法public static SingletonInstance4 getInstance(){return SingletonClassInstance.instance;}
}

枚举

public enum EnumSingle {INSTANCE;public EnumSingle getInstance(){return INSTANCE;}
}

如何保证线程安全

推荐使用 静态内部类 或者 双重检测锁 配合volatile使用

反射破坏单例模式

代码如下

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;public class LazyMan {private static boolean jiamibiaozhi = false;  // 加密标志位// 私有化所有的构造方法,防止直接通过new关键字实例化private LazyMan(){synchronized (LazyMan.class){if(!jiamibiaozhi){  // 防止反射破坏单例jiamibiaozhi = true;}else {throw new RuntimeException("不能试图使用反射破坏异常");}}System.out.println(Thread.currentThread().getName() +"LazyMan");}// 声明此类型的变量,但没有实例化, volatile防止指令重排private volatile static LazyMan instance;// 对外提供一个获取实例的静态方法public static LazyMan getInstance(){if(instance == null){synchronized (LazyMan.class){if(instance == null){// 当instance不为空的时候才实例化instance = new LazyMan();/*1.分配内存空间2.执行构造法法,初始化对象3.把这个对象指向这个空间如果不加volatile 会执行重排序 1 3 2*/}}}return instance;}// 反射破环单列public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {// LazyMan lazyMan = LazyMan.getInstance();Constructor<LazyMan> declaredConstructor = LazyMan.class.getDeclaredConstructor(null); // 获取空参构造器declaredConstructor.setAccessible(true); // 暴力反射,设置权限,无视私有构造器LazyMan lazyMan1 = declaredConstructor.newInstance(); // 通过空参构造器创建对象LazyMan lazyMan2 = declaredConstructor.newInstance();System.out.println(lazyMan1);System.out.println(lazyMan2);}
}

反射不能破坏枚举,见源码
在这里插入图片描述

http://www.zhongyajixie.com/news/1129.html

相关文章:

  • 做招聘网站需要人力资源许可搜索引擎优化的基本原理
  • 学校网站设计风格与布局专业网络推广公司
  • 厦门在线制作网站seo优化要做什么
  • 淘宝联盟 网站备案web网页
  • 自己如何做电影网站企业网站推广方案设计毕业设计
  • 网站footer设计网站一般需要怎么推广
  • 做网站违法百度竞价关键词
  • 网站建设策划书百度文库seo顾问服务咨询
  • wordpress图片像素惠州seo外包公司
  • 第五冶金建设公司职工大学网站seo优化推广公司
  • 百度域名书写北京seo优化哪家好
  • 淘宝推广网站怎么做今日最新体育新闻
  • 襄阳做网站公司电话谷歌商店下载官网
  • 福州网站建设网络公司排名网站收录平台
  • 软件测试培训机构排名河南seo排名
  • 网站静态页面下载工具营业推广经典案例
  • 中小型网站建设教程小程序推广运营的公司
  • 代做毕设网站合肥网络推广软件系统
  • 跨境电商erp软件排名东莞百度seo排名
  • 域名注册要求seo实战培训费用
  • 网站背景素材搜索引擎排名中国
  • wordpress畅言怎么样提升seo排名的方法
  • bluehost空间内直接安装wordpress失败网站关键词优化推广
  • 谷歌浏览器 安卓下载湘潭关键词优化服务
  • 网站建设合同英文模板郑州谷歌优化外包
  • 手机网站做seo创建免费网站
  • 网站建设优化石家庄互联网营销推广方案
  • 中美网站建设搜索引擎营销方法主要有三种
  • 网站建设开票单位网上代写文章一般多少钱
  • 重庆学校网站推广西安疫情最新数据消息5分钟前