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

深圳营销型网站公司做销售在哪些网站注册好

深圳营销型网站公司,做销售在哪些网站注册好,南宁网站建设加王道下拉,企业网站建设规划的基本原则单例模式#xff1a;双重效验锁的懒汉实现方式 单例模式饿汉模式实现懒汉模式实现改进1 (创建多个实例)改进2 (性能比较低)改进3 (volatile禁止指令重排序) 单例模式 单例模式顾名思义就是指实例化一个对象#xff0c;通过把构造方法私有化来禁止创建实例。 饿汉模式实现 饿汉… 单例模式双重效验锁的懒汉实现方式 单例模式饿汉模式实现懒汉模式实现改进1 (创建多个实例)改进2 (性能比较低)改进3 (volatile禁止指令重排序) 单例模式 单例模式顾名思义就是指实例化一个对象通过把构造方法私有化来禁止创建实例。 饿汉模式实现 饿汉模式的特点是在类加载的时候就创建并初始化一个实例实例在整个程序运行期间都是唯一的 public class Singleton {private static Singleton instance new Singleton();private Singleton() {}public static Singleton getInstance() {return instance;} }这里的getInstance()必须是静态方法因为静态方法可以通过类名.方法名的方式调用而非静态方法则要创建实例这与我们单例模式的规则不相符。 懒汉模式实现 懒汉模式的特点是需要的时候再创建实例实例在整个程序运行期间都是唯一的。 public class Singleton {private static Singleton instance null;private Singleton() {}public static Singleton getInstance() {if (null instance) {instance new Singleton();}return instance;} }上面代码在单线程模式下是没问题的但是在多线程模式下就会存在线程安全问题。 如果在首次创建实例多个线程同时调用getInstance()方法,就有可能创建多个实例。 改进1 (创建多个实例) 我们可以进行对 getInstance() 方法进行加锁 public class Singleton {private static Singleton instance null;private Singleton() {}public static synchronized Singleton getInstance() {if (null instance) {instance new Singleton();}return instance;} }这样虽然解决刚刚线程安全的问题,但每次调用getInstance()方法都要加锁,增加不少的开销。 我们发现上面线程安全问题只存在于首次创建实例的情况因此我们只需要对instance为空的时候单独处理即可。 改进2 (性能比较低) 当instance为空的时候加锁再判断一次是否为空即可 public class Singleton {private static Singleton instance null;private Singleton() {}public static Singleton getInstance() {if (null instance) {synchronized (Singleton.class) {if (null instance) {instance new Singleton();}}}return instance;} }粗略的看上去好像没什么问题实际上这里还有一个指令重排序的问题 通过查阅资料知道instance new Singleton();这个代码在执行的时候实际是执行分3步骤执行 memory allocate(); //1.分配对象的内存空间 ctorInstance(memory); //2. 初始化对象 instancememory; //3. 设置instance指向刚分配的内存地址JVM在执行的时候可能就会优化成 1-3-2的顺序执行 可能导致在多线程环境下,还没执行2就已经被其他线程返回了一个刚分配的地址 同样存在线程安全问题需要使用volatile关键字来禁止指令重排序。 改进3 (volatile禁止指令重排序) public class Singleton {//volatile 防止指令重排 和可见性private static volatile Singleton instance null;private Singleton() {}public static Singleton getInstance() {//先判断对象是否已经实例化过没有实例化才进入加锁代码if (null instance) {//类对象加锁synchronized (Singleton.class) {//避免 singleTon null时第一个线程实例化后进入阻塞状态的线程被唤醒后仍会进行实例化。if (null instance) {instance new Singleton();}}}return instance;} }以上就是线程安全的懒汉模式。
http://www.zqtcl.cn/news/990550/

相关文章:

  • dedecms可以做什么网站织梦做的网站在手机上显示
  • 温州建设小学的网站吐鲁番seo快速排名
  • 翼城网站建设重庆平台网站建设多少钱
  • 短视频网站的动画是怎么做的外贸一般用什么平台
  • 北京建站开发企业网站建设平台
  • 建设网站建设什么征琴他达拉非
  • 详情页制作网站广州建设工程招标信息网
  • wordpress 响应速度慢长沙seo排名扣费
  • 网站首页二级下拉框怎么做酒店网站建设方案
  • 公众号流量投放网络优化工程师有前途吗
  • 电影网站app怎么做的网站关键词是什么
  • 成都做网站建设公司建设网站总结报告
  • 个人网站要备案嘛免费响应式模板网站
  • 淘宝网站内站建设免费个人网站怎么建立
  • 网站运营经验分享ppt沉默是金粤语谐音歌词
  • 建设部网站人员查询wordpress中文 手机版
  • 大港油田建设网站电子商务公司取名字参考大全
  • 贵阳网站建设多点互动wordpress分页出现404
  • wap微信网站模板网站如何做链接
  • 泉州专业网站开发公司怎么免费做公司网页
  • 嵌入式软件开发前景怎么样百度官方优化指南
  • 网站访问速度优化工具网页设计模板图片大全
  • 哪里有手机网站制作公司网页设计与制作心得体会800字
  • 湖南建设厅网站首页简述网站建设的基本思路
  • 蚌埠公司做网站网站开发月薪
  • 怎么更换网站logo推荐几个没封的正能量网站
  • 开网站的宣传图片怎么做php网站建设面试
  • 哪些网站可以下载视频网站建设评价量规
  • 惠州市建设局网站网站模块设计怎么做
  • 群晖可不可以做网站用如何查询商标是否已经被注册