zoukankan      html  css  js  c++  java
  • Double Check Locking 双检查锁机制

    方法保证了多线程并发下的线程安全性。
    这里在声明变量时使用了volatile关键字来保证其线程间的可见性;在同步代码块中使用二次检查,以保证其不被重复实例化。集合其二者,这种实现方式既保证了其高效性,也保证了其线程安全性。

     1 package com.test;
     2 
     3 public class MyObject{
     4     volatile private static MyObject instance;
     5 
     6     private MyObject() {
     7     }
     8 
     9     public static MyObject getInstance() { // 对获取实例的方法进行同步
    10         try {
    11             if (instance == null) {
    12                 synchronized (MyObject.class) {
    13                     if (instance == null) {
    14                         instance = new MyObject();
    15                     }
    16                 }
    17                  System.out.println(instance);
    18             }
    19         } catch (Exception e) {
    20             e.printStackTrace();
    21         }
    22         return instance;
    23     }
    24 }
    View Code
  • 相关阅读:
    Filebeat
    kafka 分区 spark excutor task rdd
    Java 方法重写方法重载
    Spark union
    Storm
    pbuilder编译构建工具分析
    TCP的拥塞控制 (四)
    TCP的拥塞控制 (三)
    TCP的拥塞控制 (二)
    TCP的拥塞控制 (一)
  • 原文地址:https://www.cnblogs.com/kongxianghao/p/6848399.html
Copyright © 2011-2022 走看看