一。饿汉式
优点:简单,线程安全。
缺点:实例对象是static的,在声明的时候就实例化了,浪费资源。
二.
懒汉式
优点:用到的时候才会去实例化,在一定程度上节约了资源。
缺点:getInstance方法是用synchronized修饰的,该方法是同步的,为了保证线程安全,但是导致每次调用该方法的时候都会被同步,这样会消耗不必要的资源(不必要的同步开销)。所以这种模式一般不建议使用。
三 双重锁
这里添加了volatile意思是只能用,不能动,加synchronized是能用也能动
可以看到getInstance()方法对singleTonInstance进行两次判空,对懒汉式进行了优化,只有在第一次实例化的时候才会走第二个分支,才会同步,避免了每次都同步造成的不必要的资源消耗。
优点:第一次执行getInstance方法时才会实例化,资源利用率高,效率高。
缺点:偶尔失效(高并发条件下,由于JDK版本问题,在jdk1.5之前会失败)
四 静态内部类实现
第一次调用getInstance()方法的时候,虚拟机才会加载SingleTonHoulder静态内部类
优点:线程安全,保证单例的唯一性,延迟了对象的实例化,是推荐的方式。
缺点:
五 枚举
以上的单例实现方法都没有考虑一个因素:反序列化,即使构造函数是私有的,反序列化仍然有特殊的途径去创建类的一个新的实例。但是同构枚举实现单例不会有这样的问题,因为枚举提供了序列化机制。
六 GET解析
先创建一个按钮,在里面创建一个方法
在MainActivity中,需要在他下边在创建一个方法,主要是把值放进去
在创建一个文件比如我这个HttpManager
就是解串那些
GET比较简单
七 POST
也是先创建按钮,到MainActivity中,
在里面也需要在下边在创建一个方法
这个比GET多一些步骤