美文网首页
android 单例(DCL) 与Location服务之Geoc

android 单例(DCL) 与Location服务之Geoc

作者: DouMarK | 来源:发表于2019-07-26 00:12 被阅读0次

双检锁/双重校验缩(DCL,即double-checked locking)

public class SetDataBase {

    private volatile static SetDataBase mInstance;

    private SetDataBase() {
    }

    public static SetDataBase getInstance() {
        if (mInstance == null) {
            synchronized (SetDataBase.class) {
                if (mInstance == null) {
                    mInstance = new SetDataBase();
                }
            }
        }
        return mInstance;
    }

}

采用DLC模式,两层判断当线程A调用该方法,没初始化完成的的时,这时候内存指针指向了null,线程B再进行调用时,第一次判断,顺利进入,当没有第二层判断,就会出错,所以再添加一层判断,并通过synchronized 加锁,这时候,B就可以知道A在调用,并进入等待状态,等待线程A的调用结束/所以DLC保证了线程的安全,并保证只构建一个对象。

Location服务之Geocoder

利用android原生的Geocoder函数,输入经纬度,判断用户所在的位置
Geocoder可以在街道地址和经纬度地图坐标之间进行转换。它提供了对两种地理编码功能的访问

    private static String convertAddress(Context context, double latitude, double longitude) {
        Geocoder mGeocoder = new Geocoder(context, Locale.getDefault());
        StringBuilder mStringBuilder = new StringBuilder();

        try {
            List<Address> mAddresses = mGeocoder.getFromLocation(latitude, longitude, 1);
            if (!mAddresses.isEmpty()) {
                Address address = mAddresses.get(0);
                mStringBuilder.append(address.getAdminArea()).append(", ").append(address.getLocality()).append(", ").append(address.getCountryName());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

相关文章

  • android 单例(DCL) 与Location服务之Geoc

    双检锁/双重校验缩(DCL,即double-checked locking) 采用DLC模式,两层判断当线程A调用...

  • 单例模式 DCL(Double Check Lock)的问题

    摘抄《Android源码设计与实例》 DCL 实现单例: 问题: 关键在于instance = new Singl...

  • 11.1设计模式-单例模式-详解

    单例模式: 单例介绍 单例的六种写法和各自特点饿汉、懒汉、懒汉安全、DCL、静态内部类、枚举。 android中的...

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • 单例模式

    饿汉模式: 懒汉模式: Double CheckLock(DCL)实现单例 静态内部类实现单例 枚举单例 使用容器...

  • 2018-05-14

    单利设计模式 懒汉式 单例模式 饿汉式 单利模式 懒汉式与饿汉式的区别: 双重锁式 单例模式 (DCL )

  • 深入理解 Java 内存模型

    一、概述 在之前 单例模式的Java实现与思考 一文里讲到,为了使用 DCL 实现线程安全的单例模式,需要对实例变...

  • [Java多线程编程之十三] DCL缺陷与优化

    一、DCL问题分析   DCL,即Double Check Lock,双重检查锁定,通常使用在懒加载的单例模式中,...

  • DCL单例模式

    我们第一次写单例模式是下面这样的: 假设这样的场景:两个线程并发调用Singleton.getInstance()...

  • DCL单例模式

    DCL(Double Check Lock双端检锁机制)单例模式:适用于多线程高并发场景

网友评论

      本文标题:android 单例(DCL) 与Location服务之Geoc

      本文链接:https://www.haomeiwen.com/subject/xallrctx.html