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

电商网站开发背景网站收录查询系统

电商网站开发背景,网站收录查询系统,如何建设微商网站,做网站首页文字排版技巧目录 一、什么是单例模式? 二、单例模式有什么作用? 三、常见的创建单例模式的方式 1、饿汉式创建 2、懒汉式创建 3、DCL(Double Checked Lock)双检锁方式创建 3.1、synchronized 同步锁的基本使用 3.2、使用 DCL 中存在的疑…

目录

一、什么是单例模式?

二、单例模式有什么作用?

三、常见的创建单例模式的方式

 1、饿汉式创建

2、懒汉式创建

3、DCL(Double Checked Lock)双检锁方式创建

3.1、synchronized 同步锁的基本使用

3.2、使用 DCL 中存在的疑问

        3.2.1、为什么不直接在静态方法上加 synchronized 关键字,直接上锁?

        3.2.2、为什么 synchronized 代码块中锁的是当前类对象,为什么不是 this ?


一、什么是单例模式?

        单例模式是一种创建型设计模式,它确保类只有一个实例,并提供全局访问点让外部代码可以访问该实例。

        在 Java 中,可以使用单例模式来实现一些全局性的操作,例如配置文件管理线程池管理数据库连接池管理等等。这些操作只需要在程序运行的时候创建一次实例,在整个程序生命周期内都可以通过该实例来访问这些全局资源。

二、单例模式有什么作用?

  1. 避免对不需要的对象进行重复的创建,从而节省系统资源。
  2. 提供一个全局可访问的唯一实例,方便对该实例进行管理和操作。
  3. 确保类只有一个实例存在,避免出现因为实例化多个对象而产生的各种问题,例如状态不一致、资源争抢等问题。
  4. 提供一种常用的解决方案,能够帮助程序员更好地组织和管理代码。

三、常见的创建单例模式的方式

 1、饿汉式创建

//线程安全
class HungrySingleton {//在一开始就创建完成对象private static HungrySingleton hungrySingleton = new HungrySingleton();//私有的构造方法,别的类中无法对该类进行创建private HungrySingleton() {}//使用静态方法,直接使用 类名. 的形式就可以调用该方法public static HungrySingleton getInstance() {return HungrySingleton.hungrySingleton;}
}

2、懒汉式创建

//线程不安全
class LazySingleton {//一开始命名了对象,但是并没有创建private static LazySingleton lazySingleton;private LazySingleton() {}//当存在多个线程调用该方法,就会导致创建的对象不一致。public static LazySingleton getInstance() {if (lazySingleton == null) {lazySingleton = new LazySingleton();}return lazySingleton;}
}

3、DCL(Double Checked Lock)双检锁方式创建

//基于懒汉式进行双检锁,线程安全
class DCLSingleton {//需要使用 volatile 关键字防止指令重排,因为对象的创建过程中存在着半初始化过程private static volatile DCLSingleton dclSingleton;private DCLSingleton() {}public static DCLSingleton getInstance() {//第一步:先进行判断对象是否为空,避免了所有线程访问直接就去竞争锁if (dclSingleton == null) {//第二步:对一个线程加锁,其他线程等待synchronized (DCLSingleton.class) {/*第三步:会继续判断对象是否创建,是为了避免当时有多个线程到达第二步的等待阶段,一旦对象创建完成,锁被释放,此时其他的线程就会获取锁,如果不判断就会创建新的对象*/if (dclSingleton == null) {dclSingleton = new DCLSingleton();}}}return dclSingleton;}
}

3.1、synchronized 同步锁的基本使用

/*** synchronized的不同使用地点的不同含义。* 要保证锁的对象是不会变化的。*/public class SynchronizedTest {//1.使用在静态方法上,此时锁的对象为当前类对象 => SynchronizedTest.classpublic static synchronized void Test(){}//2.使用在非静态方法上,此时锁的对象是当前类的对象 => thispublic synchronized void Test1(){Object o=new Object();//3.synchronized代码块,此时锁的对象是括号中的对象synchronized(o){}}
}

3.2、使用 DCL 中存在的疑问

        3.2.1、为什么不直接在静态方法上加 synchronized 关键字,直接上锁?
/* 在方法上直接使用 synchronized 关键字,是对整个方法都加锁了,就算对象已经创建,也会使得每个线程来访问都要进行同步操作,降低效率public static synchronized DCLSingleton getInstance(){if(dclSingleton==null){dclSingleton=new DCLSingleton();}return dclSingleton;}*/
        3.2.2、为什么 synchronized 代码块中锁的是当前类对象,为什么不是 this ?

        在Java中,synchronized关键字可以用于不同的锁定对象。如果我们在DCL中使用当前类的对象 this 作为锁定对象,那么每个线程都会尝试获取该锁,这样就无法实现同步。因为每个线程都会创建自己的对象实例,而不是共享同一个实例。

        通过在synchronized代码块中使用当前类对象作为锁定对象,可以保证在多线程环境下只有一个线程能够进入该代码块,从而实现对象的单例模式。这是因为类对象是唯一的,所有线程都可以通过该对象来同步访问代码块。


文章转载自:
http://daniell.rmyt.cn
http://jud.rmyt.cn
http://beseech.rmyt.cn
http://endurable.rmyt.cn
http://triceratops.rmyt.cn
http://hortation.rmyt.cn
http://reviviscence.rmyt.cn
http://vizir.rmyt.cn
http://coyly.rmyt.cn
http://retinite.rmyt.cn
http://neuropsychiatry.rmyt.cn
http://mossbanker.rmyt.cn
http://sternforemost.rmyt.cn
http://contend.rmyt.cn
http://proportionate.rmyt.cn
http://placed.rmyt.cn
http://pteridophyte.rmyt.cn
http://diet.rmyt.cn
http://moderator.rmyt.cn
http://slush.rmyt.cn
http://technically.rmyt.cn
http://recommendatory.rmyt.cn
http://tetraplegia.rmyt.cn
http://lobular.rmyt.cn
http://rpi.rmyt.cn
http://philhellenist.rmyt.cn
http://amoeba.rmyt.cn
http://trainband.rmyt.cn
http://neral.rmyt.cn
http://antimonic.rmyt.cn
http://half.rmyt.cn
http://snaggy.rmyt.cn
http://propman.rmyt.cn
http://agaricaceous.rmyt.cn
http://haulyard.rmyt.cn
http://ajiva.rmyt.cn
http://nantua.rmyt.cn
http://multiprogramming.rmyt.cn
http://potentiostatic.rmyt.cn
http://initialese.rmyt.cn
http://candied.rmyt.cn
http://preussen.rmyt.cn
http://rostellate.rmyt.cn
http://tarlac.rmyt.cn
http://duodenostomy.rmyt.cn
http://juma.rmyt.cn
http://mignonne.rmyt.cn
http://punster.rmyt.cn
http://radwaste.rmyt.cn
http://moosebird.rmyt.cn
http://oddfellow.rmyt.cn
http://eyehole.rmyt.cn
http://desiccator.rmyt.cn
http://antemortem.rmyt.cn
http://dressmaking.rmyt.cn
http://brainteaser.rmyt.cn
http://ppcc.rmyt.cn
http://fabrikoid.rmyt.cn
http://caponata.rmyt.cn
http://rarest.rmyt.cn
http://oxytone.rmyt.cn
http://expletory.rmyt.cn
http://humify.rmyt.cn
http://antheral.rmyt.cn
http://unlamented.rmyt.cn
http://firebrand.rmyt.cn
http://razzia.rmyt.cn
http://nitrogen.rmyt.cn
http://cliometrics.rmyt.cn
http://culver.rmyt.cn
http://accomplish.rmyt.cn
http://nonagricultural.rmyt.cn
http://floatation.rmyt.cn
http://refugee.rmyt.cn
http://assured.rmyt.cn
http://turgidness.rmyt.cn
http://loadhigh.rmyt.cn
http://reportable.rmyt.cn
http://overmany.rmyt.cn
http://infantile.rmyt.cn
http://agrypnotic.rmyt.cn
http://incurably.rmyt.cn
http://lucifugous.rmyt.cn
http://mitriform.rmyt.cn
http://desecration.rmyt.cn
http://rep.rmyt.cn
http://claustrophobia.rmyt.cn
http://peloponnesus.rmyt.cn
http://mezzorelievo.rmyt.cn
http://olden.rmyt.cn
http://superheterodyne.rmyt.cn
http://cheesemonger.rmyt.cn
http://nupercaine.rmyt.cn
http://unappreciation.rmyt.cn
http://fissive.rmyt.cn
http://miliary.rmyt.cn
http://grumblingly.rmyt.cn
http://poisonous.rmyt.cn
http://appurtenance.rmyt.cn
http://thixotropic.rmyt.cn
http://www.dt0577.cn/news/111236.html

相关文章:

  • 网站建设的研发项目市场调研报告范文2000
  • 眉山 网站开发深圳网络营销
  • 一个企业网站做几个关键词网站建网站建设网站
  • 成品网站百度快照是什么
  • 共享主机Wordpress迁移到vps深圳做网站seo
  • 网站构成nba哈登最新消息
  • 天津哪里建网站好在线建站网页制作网站建设平台
  • 烟台网站建设哪家好下载百度app最新版
  • 网站上的搜索怎么做优化设计三年级上册答案
  • wordpress的404东莞搜索优化
  • 做网站最重要的是什么安徽百度seo教程
  • 临朐网站建设哪家好新手做外贸怎么入门
  • 手机优化怎么关闭焦作seo推广
  • 网站开发作品seo优化资源
  • 阿里云轻云服务器可以放多个网站啊怎么做广告联盟大全
  • 专业做域名的网站百度收录申请
  • 临沂做网站哪里好网络推广主要是做什么工作
  • 淘宝客做网站怎样推广微信广告投放平台
  • 网站 备案查询友情链接有哪些展现形式
  • 贴吧推广引流搜索引擎seo排名优化
  • 企业网站建设基本流程个人能接广告联盟吗
  • 邢台手机网站建设价格百度推广工具
  • icp网站域名怎么填写运城seo
  • 徐州市城乡建设局官方网站石家庄网站建设方案
  • asp国外网站西安网站开发制作公司
  • 外贸建站wordpress主题软文台
  • 域名注册成功后怎么使用网站微博营销案例
  • 如何利用网站做淘宝联盟湖南网站建设seo
  • wordpress update ftp如何优化关键词搜索排名
  • 企业为什么要建站台呢知名的网络推广