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

网站建设公司官网如何细分行业 做网站赚钱

网站建设公司官网,如何细分行业 做网站赚钱,如何建设远程教育网站,官方网站下载免费软件目录 1.什么是单例模式#xff1a; 2.单例模式存在的原因#xff1a; 3.单例模式的优缺点#xff1a; 4.创建方式#xff1a; 1. 单线程单例模式立即创建#xff08;饿汉式#xff09;#xff1a; 2. 单线程单例模式延迟创建#xff08;懒汉式#xff09;#xf…目录 1.什么是单例模式 2.单例模式存在的原因 3.单例模式的优缺点 4.创建方式 1. 单线程单例模式立即创建饿汉式 2. 单线程单例模式延迟创建懒汉式 5.多线程下测试两种模式存在哪些问题 1.先测试饿汉式代码如下 2.测试懒汉式修改 run 方法创建对象 6.两种模式简单对比 7.其他的单例模式 1.什么是单例模式 单例模式Singleton Pattern是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类该类负责创建自己的对象同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式可以直接访问不需要实例化该类的对象。 注意 1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。 2.单例模式存在的原因 一些对象的存在只需要唯一的一个例如缓存池和线程池。如果线程池存在多例的话会导致资 源使用过量缓存多个的话会导致数据不一致 3.单例模式的优缺点 优点 在内存中只有一个对象节省内存空间 避免频繁的创建销毁对象可以提高性能 避免对共享资源的多重占用简化访问 为整个系统提供一个全局访问点 缺点 没有接口不能继承与单一职责原则冲突一个类应该只关心内部逻辑而不关心外面怎么样来实例化 注意事项getInstance() 方法中需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化。 4.创建方式 创建一个 maven 项目 singleton1. 单线程单例模式立即创建饿汉式 创建类cn.xs.singleton.Hunchback public class Hunchback {/* 创建唯一一个单例对象 */private static Hunchback singleton new Hunchback();/*** 不能让外界直接创建对象所以设置私有构造器*/private Hunchback() {}/*** 单例对象的全局访问点** return*/public static Hunchback getInstance() {return singleton;} } 2. 单线程单例模式延迟创建懒汉式 在创建类 cn.xs.singleton.Lazybones public class Lazybones {/* 创建唯一一个单例对象 */private static Lazybones singleton null;/*** 不能让外界直接创建对象所以设置私有构造器*/private Lazybones() {}/*** 单例对象的全局访问点** return*/public static Lazybones getInstance() {if (singleton null) {singleton new Lazybones();}return singleton;} } 5.多线程下测试两种模式存在哪些问题 新建测试类 cn.xs.singleton.SingletonTest 1.先测试饿汉式代码如下 public class SingletonTest extends Thread {Overridepublic void run() {Hunchback singleton Hunchback.getInstance();System.out.println(singleton);}/*** 测试方法** param args*/public static void main(String[] args) {for (int i 0; i 10; i) {SingletonTest singletonTest new SingletonTest();singletonTest.start();}} } 输出的都是同一个对象没有线程安全问题但是不能延迟加载 2.测试懒汉式修改 run 方法创建对象 Override public void run() {Lazybones singleton Lazybones.getInstance();System.out.println(singleton); } 控制台输出了两个对象可见懒汉式存在线程安全问题 解决方式一 在方法上加上 synchronized保证对临界资源的同步互斥访问 /** * 单例对象的全局访问点 * * return */ public synchronized static Lazybones getInstance() {if (singleton null) {singleton new Lazybones();}return singleton; } 这种方式虽然解决了问题但是当有线程在执行方法时不管有没有创建对象其他线程都会在外等候里面的线程执行完毕有没有一种方式可以解决这个问题提高代码执行效率 解决方式二 在方法中创建对象部分设置同步块 public static Lazybones getInstance() {if (singleton null) {synchronized (Lazybones.class) {if (singleton null) {singleton new Lazybones();}}}return singleton; } 分析当还没有创建对象的时候如果被多个线程同时进入方法执行比如线程 1线程 2 进来执行方法两个线程同时判断外层 if 时都为 true 都进入外层 if 执行当走到同步块时比如线程 1 进入同步块执行代码线程 2 只能在外面等着当线程 1 创建完对象执行完同步块后线程 2 再进入同步块执行代码在同步块中线程 2 判断内层 if 结果为 false 不用再创建对象再有别的线程来执行方法就不会再一直等待前一个线程了因为外层 if 已经永远为 false 。 6.两种模式简单对比 饿汉式线程安全调用率高但是不能延迟加载 懒汉式线程安全调用率不高可以延迟加载 7.其他的单例模式 双重检测锁式由于JVM底层内部模型原因偶尔会出问题不建议使用 静态内部类式线程安全调用效率高。但是可以延时加载 枚举式线程安全调用率高不能延时加载 对比五种模式如何选用 单例对象占用资源少不需要延迟加载枚举式比饿汉式好 单例对象占用资源大需要延迟加载静态内部类式比懒汉式好
http://www.sczhlp.com/news/202884/

相关文章:

  • 短视频网站建设方案台州seo网站排名
  • 基于django电商网站开发课设报告美容手机网站模板
  • 市场监督管理局怎么样seo服务
  • 上海英文网站建设公司已矣seo排名点击软件
  • 高校网站建设建议一个seo良好的网站其主要流量往往来自
  • 外贸网站推广技巧长沙征帆网络
  • wordpress 中文图片seo和sem
  • 2025年国际物流服务领域优质品牌最新推荐排行榜 —— 聚焦行业头部企业核心优势与选择参考
  • 购物网站功能详细介绍抖音开放平台工会
  • 外贸网站建设网站开发网页平面设计要学什么
  • 辽中网站建设网站开发的软硬件环境
  • 滨州网站网站建设番禺学校网站建设建议
  • 韶关住房和城乡建设部网站金融跟单公司网站建设
  • 泉州市住房和城乡建设部网站合肥做装修哪个网站好
  • 瑞金网站建设光龙网站怎么做百度认证吗
  • 佛山学校网站建设天津公司网站推广
  • 做网站的研究生专业长沙大的建网站公司
  • 企业网站建设方案机构wordpress主题圆角
  • 网站建设 百度文库今天安阳最新消息
  • 郑州制作网站设计做网站放什么
  • 建设一个网站要多少钱上永远的吗旅游投资公司网站建设ppt模板
  • 网站建设容易学吗如何让百度收录我的网站
  • 特色美食网站建设策划书网站左侧分类菜单怎么做
  • 网站建设vi设计蛋糕店网站设计模板
  • 沈阳公司网站制作网站建设客户人群
  • 网站建设能赚钱吗怎么让客户做网站
  • 广州h5设计网站公司沈阳头条新闻
  • 网站建设属于哪个税目用什么做网站好
  • 摄影作品网站建设方案书品牌形象推广
  • 网站改版与优化协议书网站开发者id