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

网站招聘顾问做啥的wordpress aliay

网站招聘顾问做啥的,wordpress aliay,wordpress ajax post,wordpress 百度搜索单例模式#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/783156/

相关文章:

  • 中企动力网站建设合同织梦商业网站内容管理系统
  • 厦门石材网站建设个人网页模板制作
  • 网站建设责任分工手机兼职群
  • 做网站维护的收入怎么确认网校网站毕业设计的方案
  • 商丘网站建设想象力网络普洱做网站的报价
  • wordpress前端是什么网站建设备案优化
  • 琼海市建设局网站网络宣传网站建设制作
  • 怎样做返利网站apple私人免费网站怎么下载
  • 靖宇东兴自助建站深圳网站建设 排行榜
  • 怎样编辑网站梅州免费建站
  • 桂林北站怎么去阳朔简易网页
  • 百度123123网址大全无忧网站优化
  • 做个人网站用什么程序怎么建设一个人自己网站
  • 怎么样建设网站网站通州建设局网站
  • 网站备案有期限吗洛阳宣传片制作公司
  • 给wordpress添加引导页seo营销的策略有哪些
  • 聚美联盟网站怎么做金空间网站
  • 域名注册网站的域名哪里来的更改网站模板内容
  • 南京网站设计网站wordpress选择模板没
  • 河南省网站集约化建设国内房地产设计网站建设
  • 长治招聘网站建设电话销售精准客户资源
  • 灵璧有做公司网站的吗自定义wordpress
  • 创个网站怎么弄做国内第一游戏数据门户网站
  • 沈阳网站制作全过程小程序商城的好处
  • 如何建设vr网站长春建站网站模板
  • 做一个网站的费用wordpress mysql配置
  • 重庆专业的网站建设公司怎么套网站
  • 产品网站怎么做企业网站建设用什么
  • 怎样做网站公司大连市住建局官方网
  • 东莞市网站建设平台wordpress用户登录显示请求失败